标题:
单片机数码管0-99按键加减1汇编程序
[打印本页]
作者:
daniu
时间:
2014-12-27 18:20
标题:
单片机数码管0-99按键加减1汇编程序
;============================================================
;程序编写人:兰建
;编写地点:51hei培训机构
;时间:5月23日下午 星期六
;功能:本程序实现P0口的对2个数码管显示0到99,一个按键实现加1,
; 到99回到0;一个按键实现减1,减到0回到99,低电平亮
;P2口实现对数码管的片选功能
;============================================================
;//////开始初始化////////////////////////
SHUCHU EQU P0 ;定义P0口为输出口
PIANXUAN EQU P2 ;定义P2口为片选口
SHUZI EQU 30H ;设置处理数据存放地址
;========================程序开始===========================
ORG 00H ;程序开始
LJMP MAIN ;跳到MAIN
ORG 0030H ;入口地址
;========================主程序=============================
MAIN:
MOV SHUZI,#00
MOV DPTR,#TAB ;查表初始化
MOV P1,#0F3H ;设置P1.0、P1.1口为输入
START:CALL JISUAN ;计算处理
CALL DISPLAY ;查表显示
L1:JNB P1.0,L2 ;若P1.0=0,则跳到L2
JNB P1.1,L3 ;若P1.1=0,则跳到L3
LJMP START ;跳到MAIN
L2:CALL JIACHULI ;加1处理
L2_0:MOV R1,#255
L2_2:CALL JISUAN ;计算处理
CALL DISPLAY ;显示
CALL DELAY ;延时
DJNZ R1,L2_2
L2_1:JNB P1.0,L2 ;若P1.1为0,则跳到L2
JNB P1.1,L3 ;若P1.1为0,则跳到L3
LJMP START ;循环
L3:CALL JIANCHULI ;减1处理
LJMP L2_0 ;返回显示
;========================计算子程序=========================
;输入:30H
;输出:"A和B"
;实现的功能:把30H的数据的十位和个位分离出来
;============================================================
JISUAN:MOV A,SHUZI ;数据放在A中
MOV B,#10 ;除数放在B中
DIV AB ;商放在A中,余数放在B中
RET
;========================显示子程序==========================
;输入:"A"
;输出:"P0口"
;实现的功能:把A的数输出到P0口显示,十位和个位分开显示
;============================================================
DISPLAY:MOVC A,@A+DPTR
MOV SHUCHU,A ;显示十位
MOV PIANXUAN,#00H ;片选
CALL DELAY
MOV A,B
MOVC A,@A+DPTR
MOV SHUCHU,A ;显示个位
MOV PIANXUAN,#01H ;片选
CALL DELAY ;延时
RET
;========================处理子程序=========================
;输入:无
;输出:无
;实现的功能:把30H地址加1
;============================================================
JIACHULI:MOV A,SHUZI
CJNE A,#99,LL ;若A不等于9,则跳到LL
MOV A,#00
JMP L4
LL:INC A ;自加一
L4:MOV SHUZI,A
RET
;========================处理子程序==========================
;输入:无
;输出:无
;实现的功能:把30H地址减1
;============================================================
JIANCHULI:MOV A,SHUZI
CJNE A,#00,LLL ;若A不等于0,则跳到LLL
MOV A,#99
JMP L5
LLL:DEC A ;自减一
L5:MOV SHUZI,A
RET
;========================延时程序============================
;输入;无
;输出: 无
;实现的功能:延时一段时间
;============================================================
DELAY:
MOV R6,#09
L7:MOV R5,#25
L8:DJNZ R5,L8
DJNZ R6,L7
RET
;=====================共阳查表数据============================
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;=======================程序结束==============================
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1