用汇编语言实现用按键控制数码管显示数字+1,并循环

作者&投稿:徒赖 (若有异议请与网页底部的电邮联系)
如何用汇编语言实现按钮控制led灯,第一个键按下是数码管上的数字1(06H)~

ORG 0000H
JMP BEGIN
ORG 0030H
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;12345
DB 6DH,7DH,07H,7FH ;6789
DELAY: MOV R5,#20
LOOP4: MOV R6,#50H ;延时20X20ms
LOOP5: MOV R7,#100
DJNZ R7,$
DJNZ R6,LOOP5
DJNZ R5,LOOP4
RET
;---------------------------------------
BEGIN: MOV P2,#0FFH ;P2口置高电平,准备接收信号
MOV R4,#0
MOV A,R4 ;R4位标志值送A寄存器
AGAIN: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
LOOP1: MOV A,P3 ; 接收p3口的抢答信号
CPL A
JZ LOOP1
LOOP2: RRC A ;判断按键
INC R4
JNC LOOP2
;********************
MOV A,R4
MOVC A,@A+DPTR ;找到相应位显示代码
MOV P1,A
SJMP BEGIN
END

一、图貌似有点问题:
1、用的是共阴极数码管,如果用单片机直接驱动的话,应该用共阳极的;
2、所有LED(包括数码管)都未接限流电阻,建议串接470欧左右的;
3、单片机直接驱动“sounder”,估计驱动电流不够,建议接三极管后再输出
二、程序可以借鉴楼上的,但需要修改:
......
SETB P1.0
JNB P1.0,$
......
在这2句之间需要加入:
JB 1.0 LP0
LCALL DELAY_50MS
另:加入子程序DELAY_50MS
DELAY_50MS:
MOV R7,#0C3H
LP_DL:
MOV R6,#00H
DJNZ R6,$
DJNZ R7,LP_DL
RET

如果换成共阳极数码管后,数据表换成以下的:
TABLE: ;表:共阳数码管 0-9 A-F
DB 0C0H,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
以上意见供参考

第二个到底要实现什么,没看懂!
第一个如下
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_0
ORG 0030H
MAIN: MOV R3,#0
MOV DPTR,#TAB
SETB EA
SETB IT0
SETB EX0
SJMP $
INT_0: CLR EA
MOV A,R3
LCALL DISP
MOV A,R3
CJNE A,#9,LP
MOV R3,#0
SJMP RETURN
LP: INC R3
RETURN:SETB EA
RETI
DISP: MOVC A,@A+DPTR
MOV P2,A

RET
TAB: DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H
END

;共阳数码管

COUNT EQU 30H
SP1 EQU P3.6
SP2 EQU P3.7

ORG 0
AJMP MAIN
ORG 30H
MAIN: MOV COUNT,#0
MAIN1: MOV A,COUNT
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P1,A

K1: JB SP1,K2
JB SP1,$
LCALL DLY
JNB SP1,$
INC COUNT
MOV A,COUNT
CJNE A,#100,MAIN1
LJMP MAIN

K2: JB SP2,K1
JB SP2,$
LCALL DLY
JNB SP2,$
MOV A,COUNT
CJNE A,#0,DEC1
MOV COUNT,#100

DEC1: DEC COUNT
MOV A,COUNT
CJNE A,#100,MAIN1
LJMP MAIN

DLY: MOV R7,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,$-4
RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,092H,82H,0F8H,080H,090H

END


用汇编语言编一条简单的有无按键按下的识别程序,并随便解释一下,谢...
key1 equ p1.0 key2 equ p1.1 ...keyscan:jb key1,key01 ;键1如果没按下转 jnb key1,$ ;键1如果按下,等待抬起 ljmp fun1 ;转fun1 key01:jb key2,keyrtn ;键2如果没按下转 jnb key2,$ ;键2如果按下,等待抬起 ljmp fun2 ;转fun2 keyrtn:ret fun1:.....

用单片机汇编语言怎样实现按下一个按键,数码管上显示出按下的具体时间...
显示具体时间??你是说当时的时间??我知道如何让一个按键按下,显示你按的是几号键,ORG 0000H LOOP: LCALL L1 MOV DPTR,#WORDTAB MOVC A,@A+DPTR MOV P0,A LCALL DELAY SJMP LOOP L1: MOV R3,#0FEH MOV R1,#00H L2: MOV A,R3 MOV P1,A MOV A,P1 SWAP A MOV R...

用汇编语言编写的程序,有十个按键,排序是1~10,有四个数码管,要求每按一...
KEYCARD BIT 00H ;用于标志是否有键按下 KEYCOU EQU 5AH ;用于记录按下键的次数 ORG 0000H ;程序开始 AJMP START ORG 30H ;为避免占用中断向量区,主程序从30H开始 START:MOV SP,#5FH ;设置堆栈的初始地址 MOV P2,#0H ;P2,P3的初始化 MOV P3,#0FFH CLR KEYCARD ;有按键标志清0 MOV K...

如何用汇编语言实现按钮控制led灯,第一个键按下是数码管上的数字1...
#TABLE MOVC A,@A+DPTR MOV P1,A LOOP1: MOV A,P3 ; 接收p3口的抢答信号 CPL A JZ LOOP1 LOOP2: RRC A ;判断按键 INC R4 JNC LOOP2 ;MOV A,R4 MOVC A,@A+DPTR ;找到相应位显示代码 MOV P1,A SJMP BEGIN END ...

51单片机汇编语言按键如何编程?
编程时,要把整个程序,分解成一个一个模块。一个模块,只包括一个功能。那么,KEY 模块:读出按键、消除抖动、读取键值,返回键值。键值包括:00H、08H... 20H,FFH(无键)。这个 KEY 模块,到这就完了。按键如何处理,则是另外的模块。楼主流程图,包罗万象,好像是个主程序。不好弄。

汇编语言编程,一个按键,一个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_...

用汇编语言编写一个程序,能用键盘选择选择产生正弦波、方波、三角形波...
MOV AH,1 ;判断是否有按键按下 INT 16H JZ LOOP1 ;无按键则跳回继续循环,有则退出 QUIT: MOV AX,4C00H ;返回到DOS INT 21H DALLY PROC NEAR ;软件延时子程序 PUSH CX PUSH AX MOV CX,0050H D1: MOV AX,5000H D2: DEC AX JNZ D2 LOOP D1 POP AX POP CX ...

AT89S52单片机,要求用汇编语言实现按键控制发光二极管的点亮与熄灭...
START:ORL P1, #01H ; 准备读入P1.0的引脚信号 MOV C, P1.0 ; 读入的P1.0信号暂存于C JC NEXT ; 判断P1.0的信号是否为高,K是否闭合 SETB P1.1 ; K闭合,P1.1输出高电平,点亮发光二极管 SJMP START ; 转向START重新测试 NEXT:CLR P1.1 ; K断开,...

单片机汇编语言,通过按键输入4位16进制数,将输入的16进制数(0~F)在...
MAIN MOV A,P3 MOV C,#00001111B ANL C,A MOV R1,C SWAP A MOV C,#00001111B ANL C,A MOV R2,C MOV A,R2 SUBB A,#01H MOV B,#04H MUL AB ADD A,R1 LED MOV P1,A PLAY0 CJNE A,#00H,PLAY1 MOV P0,#3FH PLAY1 CJNE A,#01H,PLAY2 MOV P0,#06H PLAY2 CJNE...

用汇编语言或者C语言实现以下功能,求大神帮助,有四个按键和四个灯。
小伙子,你就按照这个思路写吧,记得采纳。include "stdafx.h"include <WINDOWS.H> include <iostream> using namespace std;void LampON(int S){ printf("S%d灯亮了!",S+1);} void LampOFF(int S){ printf("S%d灯灭了!",S+1);} bool CheckSwitch(bool bLamp)\/\/开关检测 { if(bLamp...

双桥区15351542080: 用汇编语言写数码管显示通过按键控制加减 -
召管顺铂: ORG 0000H KEY:MOV DPTR,#TABMOV A,#0 LOOP:MOVC A,@A+DPTRMOV P0,AJB P1.0,LOOP1INC ACJNE A,#8,LOOPCLR ASJMP LOOP LOOP1:JB P1.1,LOOPJZ LOOP2DEC ASJMP LOOP LOOP2:MOV A,#7SJMP LOOP TAB:DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80HEND

双桥区15351542080: 求一汇编语言通过按键的方式在数码管上显示对应的数字,要求能实现3位的 -
召管顺铂: Z8279 EQU 212H D8279 EQU 210H LEDMOD EQU 00h ;左边输入,八位显示外部译码八位显示 LEDFEQ EQU 38H ;扫描频率 CODE SEGMENT ASSUME CS:CODE,DS:CODE START: ;初始化 \\ PUSH CS OUT DX,AL POP ds MOV DX...

双桥区15351542080: 用两个按键控制数码管一个加一个减 都是按一下一加 按一下一减 用汇编语言 谢谢 -
召管顺铂: 这个用外部中断写很简单的,只要一个中断INC 30H,一个DEC30H(30只是暂存器,随便定义的,30到7F之间都可以)就行,其他的跟数码管静态显示一样的

双桥区15351542080: 如何实现用一个按键,使LED灯跟数码管不再跳跃,而保持现状????求汇编语言的!!!!!! -
召管顺铂: //这个是现在无聊看见问题写的,控制的是P1口的LED灯,按下时保持现状,松开继续原来的工 //作.如果你数码管的位或者段控制口和LED使用的是一组,用这个程序就可以一键控制,如果 //用的不是同一组,可以用汇编强大的无条件跳转636f...

双桥区15351542080: 求单片机汇编语言独立按键控制数码管程序 -
召管顺铂: 要看你的按键和数码管接到哪个脚的,基本上都是电平信号的转换,主要是要注意按键消抖,这个特别重要.告诉我你的连接图,马上搞定.

双桥区15351542080: 用单片机汇编语言怎样实现按下一个按键,数码管上显示出按下的具体时间???? -
召管顺铂: 显示具体时间??你是说当时的时间??我知道如何让一个按键按下,显示你按的是几号键,ORG 0000H LOOP: LCALL L1MOV DPTR,#WORDTABMOVC A,@A+DPTRMOV P0,ALCALL DELAYSJMP LOOP L1: MOV R3,#0FEHMOV ...

双桥区15351542080: 求一个用汇编语言编写的4*4矩阵键盘的程序,且显示输入的数字在四位数码管上, -
召管顺铂: 4*4矩阵键盘的程序,且显示输入的数字在四位数码管上 --太普通了.--任何单片机的教材上,一般,都有这样的程序和电路.

双桥区15351542080: 汇编语言点亮一个数码管怎么写 -
召管顺铂: org 0 mov a,#data ;data要显示的数字 add a,#5 ;修正 movc a,@a+dptr ;查段码 mov p1,a ;p1接数码管段选线 sjmp $ tab:db …… ;共阳或共阴段码表 end

双桥区15351542080: 单片机按键控制数码管经典程序(附汇编更好) -
召管顺铂: ; ;按键密码程序 ;;--------------------------- ; 接口 ;--------------------------- COM_DATA EQU P0 LED_DATA EQU P2 CS1 EQU P3.0 CS2 EQU P3.1 WR0 EQU P3.2 ;--------------------------- ; 数据 ;--------------------------- LED_0 EQU 30H LED_1 ...

双桥区15351542080: 求89C52单片机按1键亮数码管,并闪两个灯,按2键亮数码管,并左移灯的汇编语言程 -
召管顺铂: KEY EQU P1.0 //按键 LED1 EQU P1.1 LED2 EQU P1.2 SMG_SWITCH EQU 30H //数码管开关 ORG 0000H JMP MAIN ORG 000BH JMP INIT0 ORG 0030H MAIN_INIT: MOV SMG_SWITCH,#0 MOV TMOD,#1 MOV TH0,#0D8H MOV TL0,#0EFH//...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网