永发信息网

汇编语言编程,一个按键,一个2位数码管,实现按键计数显示在数码管上。

答案:2  悬赏:20  手机版
解决时间 2021-11-20 01:35
汇编语言编程,一个按键,一个2位数码管,实现按键计数显示在数码管上。
最佳答案
//晶振12M
KEY  BIT  P3.2   ;按键接P3.2
LED_bits BIT P3.1;个位显示控制端
LED_ten  BIT  P3.0;十位显示控制端
DATA_bits   DATA    30H;个位
DATA_ten    DATA    31H;十位
ORG   00H
LJMP  MAIN
ORG  30H
MAIN: ;主程序
SETB LED_bits
SETB LED_ten
SETB KEY 
MOV DATA_bits,#0
MOV DATA_ten,#0 
LOOP:
ACALL DISPLAY;显示
ACALL KEY_COUNT;键控
LJMP LOOP
KEY_COUNT:;键控计数
JB KEY, KEY_END
ACALL DELAY10MS
JNB  KEY,$
ACALL COUNT
KEY_END:
RET
COUNT:  ;计数
INC DATA_bits
MOV A,DATA_bits
CJNE A,#10,COUNT_END 
MOV DATA_bits,#0
INC DATA_ten
MOV A,DATA_ten
CJNE A,#10,COUNT_END 
MOV DATA_ten,#0
COUNT_END:
RET
DISPLAY: ;显示
MOV A,DATA_bits
MOV DPTR,#LEDSHOW
MOVC A,@A+DPTR
MOV P2,A
CLR LED_bits
ACALL DELAY1MS
SETB LED_bits
MOV A,DATA_ten
MOV DPTR,#LEDSHOW
MOVC A,@A+DPTR
MOV P2,A
CLR LED_ten
ACALL DELAY1MS
SETB LED_ten 
RET
DELAY10MS:   ;误差 0us
    MOV R7,#01H
DL1:
    MOV R6,#26H
DL0:
    MOV R5,#82H
    DJNZ R5,$
    DJNZ R6,DL0
    DJNZ R7,DL1
    RET
DELAY1MS:   ;误差 0us
    MOV R7,#01H
DL3:
    MOV R6,#8EH
DL2:
    MOV R5,#02H
    DJNZ R5,$
    DJNZ R6,DL2
    DJNZ R7,DL3
    RET
LEDSHOW:
        DB        03FH;0
        DB        006H;1
        DB        05BH;2
        DB        04FH;3
        DB        066H;4
        DB        06DH;5
        DB        07DH;6
        DB        007H;7
        DB        07FH;8
        DB        06FH;9
END

全部回答
;假设硬件定义如下
KEY EQU P1.0 ;0=键按下
DAT EQU P0 ;数码管显示数据口
DAT_S1 EQU P1.1 ;个位0=选中
DAT_S2 EQU P1.2 ;十位0=选中
VAL EQU 30H ;计数值
KEYVAL EQU 31H ;按键状态

ORG 0000H
SJMP STA
ORG 000BH
SJMP T0_ISR
ORG 0030H
STA:
CLR EA
MOV TMOD,#01H
MOV TH0,#0ECH
MOV TL0,#78H ;5ms
SETB ET0
SETB TR0
MOV KEYVAL,#0 ;无键按下
MOV VAL,#0
CLR 00H ;1=键按下未抬起
LCALL DISPLAY
SJMP $

T0_ISR:
CLR TR0
MOV TH0,#0ECH
MOV TL0,#78H ;5ms
SETB TR0
JB KEY,T0_E ;无键按下转T0_E
INC KEYVAL
MOV A,KEYVAL
CJNE A,#3,T0_1 连续三次检测到按键,则按键有效
T0_1:
JC T0_RE ;
SETB 00H
JNB T0_RE ;判断按键是否抬起
T0_2:
CLR 00H
INC VAL
SJMP T0_RE
T0_E:
JB 00H,T0_2 ;有效键抬起
MOV KEYVAL,#0
T0_RE:
LCALL DISPLAY ;显示
RETI
;------------------------------------------
DISPLAY:
MOV A,VAL
LCALL H2BCD
MOV A,R2
ANL A,#0FH
CLR DAT_S1
SETB DAT_S2
MOV DAT,A
MOV A,R2
SWAP A
ANL A,#0FH
CLR DAT_S2
SETB DAT_S1
MOV DAT,A
RET
;------------------------------------------
;HEX->BCD
;IN:A=0~FFH
;OUT:R3R2=百十个位
;------------------------------------------
H2BCD:
MOV B,#100
DIV AB
MOV R3,A
MOV A,#10
XCH A,B
DIV AB
SWAP A
ADD A,B
MOV R2,A
RET
;------------------------------------------
LEDTAB:
DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
DB 088H ;A
DB 083H ;B
DB 0C6H ;C
DB 0A1H ;D
DB 086H ;E
DB 08EH ;F
DB 000H ;' '
;------------------------------------------
END追问为什么,运行不出来结果啊,我的仿真图是这样的。追答按图改下硬件定义:
KEY EQU P3.2 ;0=键按下
DAT EQU P0 ;数码管显示数据口
DAT_S1 EQU P2.0 ;个位0=选中
DAT_S2 EQU P2.1 ;十位0=选中
VAL EQU 30H ;计数值
KEYVAL EQU 31H ;按键状态追问就是改过之后的运行的,也运行不出来要的效果追答JNB T0_RE ;判断按键是否抬起
这句有错了,少了一个KEY应该是
JNB KEY,T0_RE ;判断按键是否抬起追问也改了。。一样没效果
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
剑侠2打 练功木桩 涨修为快还是做 师门 哪个
逻辑问题,答案为什么是B?
冬天卫衣应该怎么搭配
初试专业不同可否调剂
统一润滑油耐劳王和超粘王哪个好
刚入手一只小巴哥,给他喂点什么狗粮呢
红瑞百年地址有知道的么?有点事想过去!
零号海湾茶会所地址在什么地方,我要处理点事
急诊男女里的崔振赫什么时候上runningman?
如何用r语言安装 permute包
张宇每天上课不听讲,也不做笔记,更不做老师
康明宝岛眼镜NO.626这个地址在什么地方,我要
1974年5月3日子时生人命运
念经时可以人移动吗?我平时一边开车一边念经
焦尔是什么单位
推荐资讯
请问这是木那翡翠么?
新密市郑州寰升寄售有限公司哪位知道具体地址
中石油讷河加油站地址在什么地方,想过去办事
石谷画家石谷画
刷过乳白漆的室内墙能不能粘墙壁纸
充电器在六楼用35米线给60伏电动车充电
请问欠账不还有送货单没有欠条可以起诉吗?
cima是日产什么车
坐北朝南的房子阳台夏天会有强太阳光照射进来
同乐小学(安庆望江县)地址在哪,我要去那里办
生命能量表戴着有害吗
木榴中学地址在什么地方,想过去办事,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?