永发信息网

题目是要求右移,这程序RL A 不是左移的,怎么读出右移?

答案:1  悬赏:0  手机版
解决时间 2021-03-27 04:28
  • 提问者网友:十年饮冰
  • 2021-03-26 04:57
题目是要求右移,这程序RL A 不是左移的,怎么读出右移?
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-03-26 06:33
你用那种语言,,(C语言....汇编语言)

现在比较忙,没空编,,

找个给你参考

直控按键控制led循环方向

k1 bit p1.4 ;K1按键与P1.4口相连
k2 bit p1.5 ;K2按键与P1.5口相接

org 0000h
ajmp start
org 0030h
start: mov p0,#0xfe ;初始点亮P0.0
mov p1,#0xff ;P1口准双向,作为输入先写入1
mov 30h,#0x03 ;30单元存储键状态,初始为00000011
mov 31h,#0x00 ;31单元检测键值时临时存储键状态
wait_key: lcall scan_key ;扫描按键(键值存于a中)
mov 31h,a ;键值送31单元
xrl a,30h ;检测键是否改变
jz wait_key ;未改变则继续扫描
lcall delay10ms ;延时10ms去抖
lcall scan_key ;继续扫描键值
mov 31h,a ;键值送31单元
xrl a,30h ;检测键是否改变
jz wait_key ;未改变则继续扫描

mov 30h,31h ;将读到的键值存入30单元
lcall key ;处理按键
ajmp wait_key ;循环扫描按键

scan_key: ;按键扫描子程序[liuwentao]
clr a ;a清零
mov c,k1 ;将位变量K1送入c
mov acc.0,c ;将c中的K1值送入a中(第0位)
mov c,k2 ;将位变量K2送入c
mov acc.1,c ;将c中的K2值送入a中(第1位)
ret

key: ;按键处理子程序
mov a,30h ;将30单元中的键值送入a
cjne a,#0x02,goon ;键值不为00000010(K1)转而检测是否为K2
ajmp key_k1 ;为K1键值则转K1处理部分
goon: cjne a,#0x01,back ;键值也不为00000001(K2)则结束
ajmp key_k2 ;为K2键值则转K2处理部分
back: ret
key_k1: ;K1键处理子程序
mov a,p0 ;当前p0口显示状态送入a
rl a ;循环左移
mov p0,a ;送入p0显示
ret
key_k2: ;k2键处理子程序
mov a,p0 ;当前p0口显示状态送入a
rr a ;循环右移
mov p0,a ;送入p0显示
ret

delay10ms: mov r5,#20 ;1+(1+2*255)*20+2*20=10.261ms@12M
temp: mov r6,#255 ;1+2*255
djnz r6,$
djnz r5,temp
ret

end
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯