目的是让HT46R47的PA0-PA7接上LED,实现间隔0.8s循环输出。反复核对程序、梳理思路,应该是可以的。选项设置为PA0-PA7的WAKE UP关闭,所有输出口上拉电阻关闭,关PFD,开pwm、开LVR、开WDT,其余默认。 但将程序写到芯片中,运行输出却不是设计的样子,而是,I/O输出电流驱动LED,PA1-PA7输出的是周期140ms的方波,相位相同,PA0是间隔时间的窄输出(用示波器没有测出输出周期),如果以灌电流驱动LLED,PA0是140ms的方波,PA1-PA7是高电平输出,在顶部是幅度很小的方波。请问高手,问题出在哪里了呢?
include ht46r47.inc
out_port equ [12h]
s_ms equ [60h].0
ms equ [61h]
dsp_n equ [62h]
org 0h
jmp start_0
org 08h
set s_ms
reti
start_0:
clr s_ms
clr ms
clr dsp_n
clr pac
set out_port
mov a,10011111b
mov tmrc,a
mov a,131d
mov tmr,a
mov a,00000101b
mov intc,a
main_loop:
call time_set
call dsp_out_set
delay_4ms0:
snz s_ms
jmp delay_4ms0
clr s_ms
jmp main_loop
dsp_out_set:
mov a,dsp_n
add a,dsp_code_1
mov tblp,a
tabrdc out_port
ret
dsp_code_1:
dc 11111110b
dc 11111101b
dc 11111011b
dc 11110111b
dc 11101111b
dc 11011111b
dc 10111111b
dc 01111111b
dc 00000000b
dc 11111111b
time_set:
inc ms
mov a,ms
sub a,200
snz c
ret
clr ms
inc dsp_n
mov a,dsp_n
sub a,10d
sz c
clr dsp_n
ret
end
|