切换到宽版
  • 6197阅读
  • 21回复

EC11旋转编码开关的汇编程序已经编写测试成功,即将开源 [复制链接]

上一主题 下一主题
离线lxa0

发帖
1137
M币
352
专家
10
粉丝
46
只看该作者 20楼 发表于: 12-07
回 广东梁百万 的帖子
广东梁百万:下面程序是在自制的STC15W408AS试验板上运行,有缺陷还没完善
....... (2018-01-14 21:53) 回 广东梁百万 的帖子

我的汇编代码:

;这是一个旋转编码器的试验汇编代码2018-1-20
;最后试验修改2018-1-26,几乎没有了抖动
;at89s52,11.0592MHz,
;p32(int0)下降沿做中断判别A,p34(t0)做引脚B判别

ORG 0000H
LJMP mm
ORG 0003H
LJMP pd                ;中断判别A脚
    
;程序入口*********************************************************      
org 0100h
mm:nop
mov 17h,#0feh          ;循环显示p0口的led
mov 18h,#00h           ;4个做判别缓冲用
mov 19h,#00h
mov 1ah,#00h           ;1ah和1bh延时1.5mS用
mov 1bh,#05h
mov p0,17h
mov sp,#4fh            ;设堆栈入口50h
mov tcon,#01h          ;int0下降沿中断
setb ea                ;开总中断
setb ex0               ;开int0
mm0:nop
sjmp mm0

;int0中断代码*****************************************************
org 0300h
pd:nop
clr ea
push acc
push psw
push dph
push dpl
mov a,p3
anl a,#00010100b        ;保留p32和p34脚屏蔽其余引脚
mov 18h,a               ;暂存在18h
acall ys100             ;延时约1.5ms
mov a,p3
anl a,#00010100b        ;再次读p3口判别
cjne a,18h,pd0          ;不是正转则判别是否反转
cjne a,#10h,pd0         ;A=L,B=H时led灯右移动          
mov a,17h
rl a
mov 17h,a
mov p0,a
sjmp pd00
pd0:mov a,p3
anl a,#00010100b
mov 19h,a
acall ys100             ;延时约1.5ms
mov a,p3
anl a,#00010100b
cjne a,19h,pd00         ;是干扰则返回
cjne a,#00h,pd00        ;A=B=L时led灯左移动
mov a,17h
rr a
mov 17h,a
mov p0,a
pd00:setb ea
pop dpl
pop dph
pop psw
pop acc
reti

ys100:nop               ;延时约1.5mS
ys0:djnz 1ah,$
djnz 1bh,ys0
mov 1ah,#00h
mov 1bh,#05h
ret


end
QQ:87401614
http://lxa0.uueasy.com

发帖
531
M币
934
专家
11
粉丝
18
只看该作者 21楼 发表于: 12-09
回 lxa0 的帖子
lxa0:咋这么复杂?
在控制什么呢? (2018-12-07 23:12) 回 lxa0 的帖子

是一个定时计数器,练习测试的。差不多一年没动过单片机了,转方向学习PLC和触摸屏了。