求助
本人采用8253做计数器,想实现8253的t1和t2口做为计数器,其中当编码器产生2000个脉冲时在t1的clk1产生1个脉冲从而实现t1计整圈,t2计不足一圈时的脉冲数,初次设计但仍有许多不解之处,从资料上看应采用方式0(计数结束中断方式),t2计数到后,out为高直至重新写入新的控制字,但是这样写我觉得可能会有数据丢失,而且高位即脉冲数不是设想的整数圈有哪能位高手帮忙一下不胜感激。
tsde equ 50h
org 0000h
jmp starrt
org 0030h
starrt:
mov r0,#00h
mov tsde,#00h
start:
mov dptr,#5fffh;8253选中
mov a,#0b0h; 方式0计数方式:0b0h 10110000
movx @dptr,a
mov a,#0d0h
mov dptr,#5ffeh
movx @dptr,a
mov a,#07h
movx @dptr,a
main:
mov a,80h;00000000b;闩锁读数
mov dptr,#5fffh
movx @dptr,a
mov dptr,#5ffeh
movx a,@dptr
mov r2,a
movx a,@dptr
mov r3,a
mov a,r3 ;r2,r3为不足一圈数
cjne r3,#0ffh,main ;2000脉冲后重新加载
mov a,tsde
inc a
mov tsde,a ;50h 为整圈数,此处也用用8253的t1计数
ljmp start
end
[img]c:\my documents\8253.bmp[/img]
发表时间:2004年4月13日13:56:35