*
注意:如果无法在keil里编译,请删除每一行的所有前导空白
程序效果:若按键0(即7EH)按下,则加1;若按键1(即7DH)按下,
则减1;若按键2(即7BH)按下,则快加,若按键3(77H)按下,则快减。
*/
ORG 0000H
LJMP START
ORG 0030H
START: MOV 30H,#00 //赋初值
MOV 31H,#00
MOV 32H,#01
LOOP1: MOV R2,#04 //循环四次
MOV R1,#0FEH //分别为:0FEH ?FDH ?FBH ?F7H
LOOP: MOV A,R1 //赋值,用于暂存A的值
MOV P0,A //赋初值
RL A //循环左移
XCH A,R1 //暂存A的值
MOV A,P0 //读?P0口的值
LCALL DELAY1 //延时
CJNE A,#7EH,LOP1 //判断是否有按键按下
LCALL ADD1 //有,则加1
LOP12: MOV A,P0 //以下语句是用于判断按键是否松开
LCALL DELAY1
CJNE A,#7EH,LOP1
LCALL DISPLAY
SJMP LOP12
LOP1: CJNE A,#7DH,LOP2
LCALL SUB1
LOP22: MOV A,P0
LCALL DELAY1
CJNE A,#7DH,LOP2
LCALL DISPLAY
SJMP LOP22
LOP2: CJNE A,#7BH,LOP3 //判断快加的按键按下
MOV R3,#10 //按下了,下面的语句用于减慢数值变化速度
LOP32: LCALL DISPLAY
LCALL DELAY
DJNZ R3,LOP32
LCALL ADD1
LOP3: CJNE A,#77H,LOP4
MOV R4,#10
LOP42: LCALL DISPLAY
LCALL DELAY
DJNZ R4,LOP42
LCALL SUB1
LOP4: DJNZ R2,LOOP
LCALL DISPLAY
LJMP LOOP1
//显示子程序
DISPLAY: MOV DPTR,#TAB //赋表首地址
MOV A,#0FFH
MOV P1,A //点亮最右边的数码管
XCH A,R0 //暂存A的值
MOV A,30H //显示个位数
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY1 //延时
DEC R0 //减1,用于点亮下一个数码管,准备下次显示
XCH A,R0
MOV P1,A
XCH A,R0
MOV A,31H
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY1
DEC R0
XCH A,R0
MOV P1,A
XCH A,R0
MOV A,32H
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY1
RET
//加子程序
ADD1: INC 30H //个位加1
MOV A,30H //把30H的值赋给A
CJNE A,#0AH,LAP //判断个位是否加为10
MOV 30H,#00 //是,则清零
INC 31H
MOV A,31H
CJNE A,#0AH,LAP
MOV 31H,#00
INC 32H
MOV A,32H
CJNE A,#0AH,LAP
MOV 32H,#00
LAP: NOP //空指令
RET //返回
//减子程序
SUB1: DEC 30H //个位减1
MOV A,30H //把30H的值赋给A
CJNE A,#0FFH,LSP //判断30H的值为0后是否在减1
MOV 30H,#09 //是,则给30H赋9
DEC 31H
MOV A,31H
CJNE A,#0FFH,LSP
MOV 31H,#09
DEC 32H
MOV A,32H
CJNE A,#0FFH,LSP
MOV 32H,#09
LSP: NOP
RET
//延时子程序,时间大约为2us*20*200=8ms
DELAY: MOV R6,#20
DEL2: MOV R5,#200
DEL3: DJNZ R5,DEL3
DJNZ R6,DEL2
RET
//延时子程序,时间约为:2us*5*250=2.5ms
DELAY1: MOV R6,#5
DEL4: MOV R5,#250
DEL5: DJNZ R5,DEL5
DJNZ R6,DEL4
RET
TAB: DB 3FH,06H,5BH,4FH,66H ;数码管显示的数值
DB 6DH,7DH,07H,7FH,6FH
END
注意:如果无法在keil里编译,请删除每一行的所有前导空白,
上一篇:按键与数码管C语言例程
下一篇:用单片机设计15s倒计时器
推荐阅读最新更新时间:2024-03-16 13:12
设计资源 培训 开发板 精华推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况