|
开始学下汇编,这是一个MEGA32 Timer2异步时钟中断测试程序在中断里翻转PORTD~0,1,
异步时钟频率:32.768K。
AVR Studio 4.18
现在程序可以正常跑,但初始化似乎出现未知情况,上电后要等待两到三秒(感觉)才开始正常执行。劳您指教。
.CSEG
.include "m32def.inc"
.org 0x0000
rjmp RESET
.org 0x008
rjmp Timer
.org 0x0030
Timer:
ldi r17,0x01
sub r27,r17
cpi r27,0x00
brne GO_back
ldi r27,0x1f
in r16, PORTD
swap r16
out PORTD, r16
GO_back:
reti
.org 0x0039
RESET:
ldi r28,0x5f
ldi r29,0x1f
out SPL,r28
out SPH,r29
ldi r27,0x08
ldi r16, 0xff
out DDRD, r16
ldi r16, 0xde
out PORTD, r16
ldi r16, 0x00
out TIMSK, r16
ldi r16, 0x08
in r17, ASSR
or r16,r17
out ASSR, r16
ldi r16, 0x00
out TCNT2, r16
ldi r16, 0x00
out OCR2, r16
ldi r16, 0x0f
out TCCR2, r16
Status:
in r16,ASSR
cpi r16,0x08
brne Status
ldi r16, 0xc0
in r17, TIFR
or r16,r17
out TIFR, r16
ldi r16, 0x80
out TIMSK, r16
sei
Loop:
rjmp Loop |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|