; Copyright 2005 Doi Shigeki ;list0905.asm ATmega162テスト・プログラム1 ; LED点滅,スイッチのエコー ; 8分周された内部8MHzクロックを想定 .include "m162def.inc" .org 0x0 ;割り込みは使用しないので ;ベクトル省略 reset: LDI R16,LOW(RAMEND) ;スタック・ポインタの設定 OUT SPL,R16 LDI R16,HIGH(RAMEND) ;RAMのサイズが大きいので2バイト設定する OUT SPH,R16 LDI R16,0b00000000 ;ポートAを入力に設定 OUT DDRA,R16 LDI R16,0b11111111 ;ポートCを出力に設定 OUT DDRC,R16 LDI R17,10 ;10回点滅 loop: LDI R16,0b00001111 OUT PORTC,R16 RCALL wait05 LDI R16,0b00000000 OUT PORTC,R16 RCALL wait05 DEC R17 BRNE loop loop2: IN R16,PINA ;スイッチ入力 OUT PORTC,R16 ;LEDへエコー RJMP loop2 ; ;時間待ち 0.5秒/1MHzクロック ; wait05: LDI R18,5 wait052: RCALL wait01 DEC R18 BRNE wait052 RET ; ;時間待ち 0.1秒/1MHzクロック ; wait01: LDI R19,100 wait012: RCALL wait1m DEC R19 BRNE wait012 RET ; ;時間待ち 約1ms/1MHzクロック ; wait1m: LDI R20,250 wait1m2: NOP DEC R20 BRNE wait1m2 RET