51单片机汇编语言编程独立按键

作者&投稿:矣狡 (若有异议请与网页底部的电邮联系)
51单片机入门编程(汇编语言)~

ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 SETB ET0 SETB EA CLR P1.0 SJMP $T0ISR: CLR TR0 MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 CPL P1.0 RETI END

你这没有给出原理图,数码管和按键是怎么接的?是仿真实现吗,下图是仿真图,用了四位一体的共阴数码管,4个按键在P3.4~P3.7上。
仿真结果,你要是仿真,就按这个仿真图画,程序就完全适用。如果是实物开发板,就是根据开发板,适当修改程序了。

汇编程序如下
S1 BIT P3.4
S2 BIT P3.5
S3 BIT P3.6
S4 BIT P3.7
DISM1 EQU 31H
DISM2 EQU 32H
DISM3 EQU 33H
DISM4 EQU 34H
START:MOV R0,#7FH
CLEAR:MOV @R0,#0
DJNZ R0,CLEAR
MAINP:ACALL DISUP;主程序
TEST1:JB S1,TEST2
ACALL DELK4
JB S1,TEST2
INC DISM1
MOV A ,DISM1
CJNE A ,#10,CMPM1
CMPM1:JC WAIT1
MOV DISM1,#0
WAIT1:JNB S1 ,$
AJMP MAINP
TEST2:JB S2,TEST3
ACALL DELK4
JB S2,TEST3
INC DISM2
MOV A ,DISM2
CJNE A ,#10,CMPM2
CMPM2:JC WAIT2
MOV DISM2,#0
WAIT2:JNB S2 ,$
AJMP MAINP
TEST3:JB S3,TEST4
ACALL DELK4
JB S3,TEST4
INC DISM3
MOV A ,DISM3
CJNE A ,#10,CMPM3
CMPM3:JC WAIT3
MOV DISM3,#0
WAIT3:JNB S3 ,$
AJMP MAINP
TEST4:JB S4,MAINP
ACALL DELK4
JB S4,MAINP
INC DISM4
MOV A ,DISM4
CJNE A ,#10,CMPM4
CMPM4:JC WAIT4
MOV DISM4,#0
WAIT4:JNB S4 ,$
AJMP MAINP
DISUP:MOV DPTR,#TABLE;显示子程序
MOV R0 ,#DISM1
MOV R2 ,#0FEH
DISB1:MOV P2 ,R2
MOV A ,@R0
MOVC A ,@A+DPTR
MOV P0 ,A
MOV A ,R2
RL A
MOV R2 ,A
ACALL DELAY
INC R0
CJNE R0 ,#DISM4+1,DISB1
RET
DELK4:MOV R6 ,#10
SJMP DELA1
DELAY:MOV R6 ,#2
DELA1:MOV R7 ,#150
DJNZ R7 ,$
DJNZ R6 ,DELA1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H;共阴段码表
DB 6DH,7DH,07H,7FH,6FH
END

四个按键,定义如下:

KEY1 BIT P3.0
KEY2 BIT P3.1
KEY3 BIT P3.2
KEY4 BIT P3.3

按键处理程序:
;-----------------------------------
READ_KEY:

JB KEY1, K2
CALL DELAY
JB KEY1, K2
JNB KEY1, $

PUSH ACC
INC 75H
MOV A, 75H
CJNE A, #10, ZINT01
MOV 75H, #0
ZINT01:
POP ACC

JMP K_EXIT
;---------------
K2: JB KEY2, K3
CALL DELAY
JB KEY2, K3
JNB KEY2, $

PUSH ACC
INC 76H
MOV A, 76H
CJNE A, #10, ZINT01
MOV 76H, #0
ZINT01:
POP ACC

JMP K_EXIT
;---------------
K3: JB KEY3, K4
CALL DELAY
JB KEY3, K4
JNB KEY3, $

PUSH ACC
DEC 75H
MOV A, 75H
CJNE A, #255, ZINT03
MOV 75H, #9
ZINT03:
POP ACC

JMP K_EXIT
;---------------
K4: JB KEY4, K_EXIT
CALL DELAY
JB KEY4, K_EXIT
JNB KEY4, $

PUSH ACC
DEC 76H
MOV A, 76H
CJNE A, #255, ZINT04
MOV 76H, #9
ZINT04:
POP ACC

K_EXIT:
RET
;---------------
DELAY:
DJNZ R7, $
DJNZ R7, $
RET
;-----------------------------------


单片机汇编语言的编程问题!
首先教你如何理解JNB和JB,JNB就是Jump Not Bit,这样不好理解,解释一下就明白了:jump表示跳转,not表示0,bit表示该位。它实际是条件判断语句,意思是:如果该为为0则跳转,否则继续下一条。例:JNB P1.1,mark[如果P1.1位为零则跳转到mark标志指向的指令,否则继续执行下一行]JB则与JNB相反...

求一个用汇编语言编写单片机简易交通灯程序。求高手帮下忙谢谢了...
;--- ;程序实现功能 ;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。;工作寄存器及存储单元分配 ;1.工作寄存器 ;R2设置为定...

单片机。分别使用c语言和汇编语言编写一个程序
include<reg52.h>unsigned char aa _at_ 0x30;void main(){ IE = 0x81; IT0 = 1; aa = 0; while(1);}X0_INT() interrupt 0{ aa++; aa %= 100;}\/\/=== ORG 0000H LJMP START INC 30H MOV A, #100 CJNE A, 30H, E...

51单片机编程题,用汇编语言怎么做?
TL0 = (65536-500)%256;EA=1; ET0=1; TR0=1;} void timer0() interrupt 1 { TH0 = (65536-500)\/256; \/\/定时器装初值500, 1mS 中断一次 TL0 = (65536-500)%256;CP=~CP; \/\/改变脉冲信号的输出状态 } void main(){ Timer0_init();CP=0;while(1) { } } 汇编语言,才...

单片机-汇编语言编程
不能执行 错误1:没有SETR指令,有SETB指令;是让指定的位为1的指令.错误2:我不记得有JL这一条指令,按你的格式来看,有点像CJNE(比较不相等)指令.错误3:LCALL CC这条指令构成了死循环了.还有你的句子与标题句尽量写在一行,否则,有些编辑软件会识别错误的....

利用汇编语言编单片机程序,求大神帮助。。。
ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV A,#0FEH ;是开始键按下 则跑马灯开始运行 LL: MOV P1,A LCALL YS ;显示延时 RL A ;循环右移一位 CJNE A,#0FEH,LL ;不是最后一个,则转到LL继续显示下一个LED发光二极管亮 MOV A,#0FFH ...

单片机编程,汇编语言
去除1个最大值、去除1个最小值后再取平均值,如下即可:;;(31H)+(32H)+...+(39H)--->R2R3 ;MOV R0, #31H MOV R2, #0 MOV R3, #0 LP1:MOV A, @R0 ADD A, R3 MOV R3, A JNC NEXT INC R2 ;和在R2R3 NEXT:INC R0 CJNE R0, #3AH, LP1...

汇编语言是一种什么程序设计语言?
汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。...

单片机MCS-51汇编语言中的“A、B、C”指的是什么?
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I\/O口和中断系统、定时器\/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A\/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在...

单片机跑马灯程序 汇编语言编写,很简单
程序1: ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#5FHLOOP: MOV A,P2 MOV B,A MOV P0,A MOV P1,#0FFHLOOP1: LCALL DELAY MOV C,P1.7 MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A MOV A,P2 CJNE A,B,...

思茅市17213009768: 51单片机汇编语言编程独立按键 -
樊畏盐酸: 四个按键,定义如下:KEY1 BIT P3.0 KEY2 BIT P3.1 KEY3 BIT P3.2 KEY4 BIT P3.3按键处理程序: ;----------------------------------- READ_KEY: JB KEY1, K2CALL DELAYJB KEY1, K2JNB KEY1, $ PUSH ACCINC 75HMOV A, 75H...

思茅市17213009768: 51单片机用汇编语言编写一个程序.设置4个独立按键,一个调模式,一个调时间,一个加,一个减.用16 -
樊畏盐酸: 用汇编,稍稍有些麻烦.参考:http://hi.baidu.com/do_sermon/item/c8d1161d40768f10e3f98682

思茅市17213009768: 51单片机独立按键部分编程问题 -
樊畏盐酸: 你好:程序是这么运行的: 先在心中想象独立按键的结构,没按下时,P3外接上拉电阻,所以输入总是1,按键按下时,倒地,对应按键的IO输入为0. 然后,先置IO为输入,没按下时读出全是1,0xff,当有按键按下时,读入为0了,所以用if(...

思茅市17213009768: 若51单片机的P1.0口接了一个独立按键,编写程序完成按键检测程序要求每按下一次P1. -
樊畏盐酸: sbit button P1^0; if(button == 0) //一旦检测到键值 { Delay(); //延时20ms,有效滤除按键的抖动 if(button == 0) //再次确定键值是否有效 { //Do somethinghere! } }

思茅市17213009768: 51单片机控制数码管显示时钟,独立按键怎么弄 -
樊畏盐酸: 独立按键处理起来是非常简单的,一般都是IO口单独控制,所以只需要消抖和判断按键按下抬起状态就好.比如: sbit key=P1^0; if(key==0) {delay(10);if(key==0){keyval=1;while(key==0);} }

思茅市17213009768: 单片机的独立按键 -
樊畏盐酸: 51单片机接按键,按键一端接地,另一端与I/O引脚相连,按键按下为低电平,未按下为高电平. 思路正确,如果用P0口需要加上拉电阻(10k),其他端口可以 不加 上拉电阻, 现在的 STC 10、11、12、15系列单片机 都可以 不加 上拉电阻. 编程 时 只要用 检测 高 低 电平 来判断是否 有 按键 按下 就可以了.

思茅市17213009768: 51单片机两程序独立按键切换连接程序怎么写? -
樊畏盐酸: 两段程序还是要合并成一个主程序的,只是分开成两段而已. sbit ins1=独立按键所在I/O脚; bit keyab=0; //区分执行A,B程序的标志位,=0,执行A段,=1执行B段 main() { ........... while(1) //while前的程序照常写 { if(ins1==0) { keyab=!keyab; while(ins1==0); } if(keyab==1) { A段程序写在这里 } else { B段程序写在这里 } } } 这样写后,原来A、B程度中的while(1)就不能再写了.而是将while(1)以下程序写到这里.

思茅市17213009768: 请问51单片机如何用一个独立按键控制程序的暂停和继续 -
樊畏盐酸: 1.你的程序并不能实现显0~9,1357,0246,亮灯和响铃是可以. 2.用P1.1按键是可以实现暂停和继续的,并不需要中断.不是什么事都需要中断,好像离开中断就什么也不能做了? 3.你想暂停,是随时暂停,还是什么时候暂停?

思茅市17213009768: 求51单片机独立按键的代码.功能:类似设置电子表时间.见补充 -
樊畏盐酸: void delay(unsigned char); void main() { ....; }/************IndependentButtons*************/ char Button(void) { unsigned char state1,a = 1,mt = 1;P1 = 0xff; state1 = P1; state1 = ~ state1; if(state1 != 0x00) { delay10ms(5); do{ if(mt > 1) dealy10ms(100); ...

思茅市17213009768: 51单片机c语音独立按键程序 -
樊畏盐酸: 一个独立按键程序,没有必要写成子程序,更没有必要写得这么复杂.其实很简单的.如下程序:#include typedef unsigned int u16; sbit k1=P1^0; sbit led=P1^1; void delay(u16 i) { while(i--); } void main() { led=0; while(1) { if(k1==0) { delay(700); if(k1==0) { led=~led; } while(k1==0); //等待按键释放 } } }

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