需要一个单片机汇编语言程序:1个按键控制1个灯,此键每快速地按2下,灯的亮与灭就翻转1次
下列程序,已经经过实验,可以满足题目要求。
KEY1 EQU P3.0
KEY2 EQU P3.1
LED1 EQU P3.2
LED2 EQU P3.3
Flag1 EQU 20H.0
Flag2 EQU 20H.1
L_F1 EQU 20H.2
L_F2 EQU 20H.3
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0030H
MAIN:
MOV TH0, #04H
SETB TR0
MOV IE, #82H
MOV R2, #50
SJMP $
T0_INT:
MOV TH0, #04H
MOV C, Flag1
MOV LED1, C
DJNZ R2, K0
MOV R2, #50
JNB Flag2, K0
CPL LED2
K0:
;-------------------
K11:
JB KEY1, K12
SETB L_F1
SJMP K21
K12:
JB L_F1, K13
SJMP K21
K13:
CLR L_F1
CPL Flag1
;-------------------
K21:
JB KEY2, K22
SETB L_F2
SJMP K31
K22:
JB L_F2, K23
SJMP K31
K23:
CLR L_F2
CPL Flag2
;-------------------
K31:
RETI
END
一键多功能按键识别技术 1.实验任务 开关K1接在P3.2管脚上,在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。 2.系统板上硬件连线 把“单片机系统”区域中的P3.2端口连接到“独立式键盘”区域中的K1端口上;把P0.0连到L1上 3.程序设计方法 (1. 设计思想由来 在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID的值是不相同的,所以单片机就很容易识别不同功能的身份了。 (2. 设计方法 从上面的要求我们可以看出,L1到亮灭受开关K1来控制,我们给L1亮灭定义出不同的ID号,当L1在亮时,ID=0;当L1在灭时,ID=1;分别给出不同的ID号我们就能够完成上面的任务了 4.汇编程序: ID EQU 30H K1 BIT P3.2 L1 BIT P0.0 ORG 0000H CLR P1.7 MOV ID,#00H START: JB K1,REL ;K1没闭合转 LCALL DELAY10MS ;K1闭合,延时消抖动 JB K1,REL :再判断 INC ID MOV A,ID CJNE A,#02,REL MOV ID,#00H REL: JNB K1,$ ;等待开关弹起 MOV A,ID CJNE A,#00H,IS0 ;判断相应ID CLR L1 :ID=0,灯亮 LCALL DELAY光 ;延时 SJMP START IS0: CJNE A,#01H,START; SETB L1 LCALL DELAY SJMP START DELAY10MS: MOV R6,#20 ;延时10MS子程序 LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET DELAY: MOV R5,#20 ;延时20MS子程序 LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END
双击功能。统计《按键释放》到《下次按键》的时间,很简单的。
=============
;下列程序,已经经过实验检测,可以满足题目要求:
;---------------------------------------------
LED EQU P3.5
KEY EQU P3.7
ORG 0000H
LJMP START
ORG 0030H
START:
JB KEY, $
CALL DELAY10MS
JB KEY, START
JNB KEY, $
DAN_JI:
CALL DELAY10MS
MOV R2, #20
K_LOOP:
CALL DELAY10MS
JNB KEY, SHUANG_JI
DJNZ R2, K_LOOP
SJMP START
SHUANG_JI:
CALL DELAY10MS
JB KEY, DAN_JI
CPL LED
JNB KEY, $
SJMP START
;-------------------------
DELAY10MS:
MOV R6, #20
DJNZ R7, $
DJNZ R6, $ - 2
RET
;-------------------------
END
题目的要求,十分简单,不用定时器就可以完成。
按照本程序的思路、方法,编写《单击》、《长按》、《双击》、《三连击》的程序,都不是难事。
一分都不给,太吝啬了吧?
你要先告诉我,51单片机用什么晶振,最好有个电路贴图,按键是上拉触发还是下拉触发?按键是否并有电容。
KEY EQU P1.0
LED EQU P1.1
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
MOV TH0,#HIGH(65536-40000)
MOV TL0,#LOW(65536-40000)
SETB ET0
SETB EA
CLR A
LOOP:
CLR 00H
CLR TR0
JB KEY,LOOP
SETB TR0
LOOP1:
JB 00H,LOOP
JB KEY,LOOP1
CPL LED
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-40000)
MOV TL0,#LOW(65536-40000)
SETB TR0
INC A
CJNE A,#10,T0E
CLR A
SETB 00H
T0E:
RETI
END
单片机汇编语言
给你共阴极字形码:0-9-F0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71你定义数组放上面的字形码,比如:然后上面连的段选口给对应的字形码,比如前三个数码管,上面的段选连P0口,下面位选分别接P2^4,P2^5,P2^6 你想让第一个显示0,其他...
单片机用汇编语言:使内部ram30h~3fh置初值10h~1fh,然后将其传送到外部...
ORG 0000H LJMP STA ORG 0050H STA:MOV R0,#30H MOV R1,#50H MOV R2,#10H MOV R3,#16 MOV DPTR,#2000H LOOP1:MOV A,R2 MOV @R0,A;10H~1FH分别赋值给30H~3FH MOV A,@R0;MOVX @DPTR,A;30H~3FH分别传送到2000H~200FH MOVX A,@DPTR;MOV @R1,A;2000H~200FH分别传给50H~...
关于汇编语言的问题,我们学习单片机的汇编语言,但是有些语言的意思不...
1、MOV R0,#20HLOOP:MOV A,R0MOV @R0,AINC R0CJNE R0,#50H,LOOP2、ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0SETB ET0SETB EAMOV R2,#5SJMP $T0ISR:CLR TR0MOV TH0,#HIGH(65536-50000)...
用汇编语言,求MSC-51单片机内部20H-30H单元数据的累加和,将结果存入...
QH: MOV R0,#20H MOV 31H,#0LOOP: MOV A,@R0 ADD A,31H MOV 31H,A INC R0 CJNE R0,#30H,LOOP RET
51单片机,用汇编语言编写程序,10秒内对外部脉冲进行计数,并数出外部脉...
;R1:R0\/B=R1:R0 DIV16:MOV R7,#08H MOV B,#6 DIV1:CLR C MOV A,R0 RLC A MOV R0,A MOV A,R1 RLC A MOV R1,A CLR C SUBB A,B JC DIV2 MOV R1,A INC R7 DIV2:DJNZ R7,DIV1 RET END ...
编程题(单片机)汇编语言
利用定时器中断实现的任务,请编译一下,若有问题欢迎追问。OORG 0000H SJMP MAIN;跳转到主程序 ORG 001BH AJMP Timer1_Interrupt;跳转到定时计数器T1中断子程序 MAIN: CLR P1.2;清P1.2 MOV TMOD,#50H;配置T1为外部16位计数 MOV TH1,#0FE;配置T1寄存器外部计数500个脉冲初值 MOV TH0,...
用单片机汇编语言求:1、统计一串数据中正数负数的个数(不包括零)_百 ...
MOV R3,#00H;存放大于0的个数 START:MOV A,@R0 CJNE A,#00H,LOOP SJMP SLOOP1 LOOP:JC SLOOP0 JNC SLOOP2 SLOOP0:INC R1 SJMP NEXT SLOOP1:INC R2 SJMP NEXT SLOOP2:INC R3 SJMP NEXT NEXT:INC R0 DJNZ R7,START MOV 22H,R3 MOV 21H,R1 MOV 20H,R2 END 你要传必须有地址,这是...
可以用用汇编语言编程,也可以用c语言编程,单片机的题,急,
include <reg52.h> sbit LED7=P1^7; \/\/LED7控制位 sbit LED9=P4^7; \/\/LED9控制位 sbit LED4=P2^7; \/\/LED4控制位 sbit sw17 = P3^2; 按键key void Delay(uchar a){ uchar i,j=110;i=a;while(i--){ while(j--);} } int main(void ){ if(1 == sw17){ delay(5...
51单片机汇编语言-请编写程序将内部RAM 40H到4FH 中的16个数据按从小...
MOV A, @R0 ; 取前一个数 INC R0 MOV B, @R0 ; 取后一个数 CJNE A, B, L3 ; 前面的数 与 后面的数 比较, 前-后 L3: ;判断、处理 JC N_JH ; 后面的数 大于 前面的数,不交换 XCH A,B ...
单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个...
循环点亮LED灯,也就是流水灯效果的控制,可以用定时器来控制,这样做相对代码量较少而时间比较精确,外部中断0接以按键,可以控制动态效果的启停。程序如下:ORG 0000H LJMP MAIN ORG 0003H LJMP EXT0 ;外部中断0,控制流水灯启停 ORG 000BH LJMP T0ISR ;定时0控制流水灯循环点亮 ORG 0030...
柴点磺胺: 双击功能.统计《按键释放》到《下次按键》的时间,很简单的.=============;下列程序,已经经过实验检测,可以满足题目要求:;--------------------------------------------- LED EQU P3.5 KEY EQU P3.7 ORG 0000H LJMP START ORG 0030H ...
交口县13117813281: 如何设计一个单片机程序,只要一个按件,第一次按下为开始.第二次为停止,第三次为复位,而后如此循环?
柴点磺胺:ORG 00H START: AJMP BEGIN ;****************************** ; Interrept Jump Table * ;****************************** ORG 0003H NOP ;EXINT0 interrupt RETI ORG 000BH NOP RETI ORG 0013H NOP RETI ORG 001BH NOP RETI ORG 0023H NOP ...
交口县13117813281: 单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个按键上,怎么写我需要详细的程序 - ?
柴点磺胺: 循环点亮LED灯,也就是流水灯效果的控制,可以用定时器来控制,这样做相对代码量较少而时间比较精确,外部中断0接以按键,可以控制动态效果的启停.程序如下: ORG 0000H LJMP MAIN ORG 0003H LJMP EXT0 ;外部中断0,控制流...
交口县13117813281: 汇编的问题,单片机的.我要添加一个按键+1的子程序. 一个按键输入的子程序,应该放在哪里好. - ?
柴点磺胺: MAIN: ;主程序 LCALL AJZCX ;调用按键子程序AJZCX: JB PX.X , AJZCX2 ; 定义键的 IOACALL DELAY ; 延时2 mS 左右子程序JB PX.X , AJZCX2JB AJBZ, AJZCX1 ; 定义一个标志SETB AJBZinc MIAO AJZCX1: RET AJZCX2: CLR AJBZRET
交口县13117813281: 单片机汇编语言1加到100怎么编? - ?
柴点磺胺: org 0mov r0,#100 ;共100个数 mov a,#0 ;累加结果先清0 mov r1,#1 ;第1个数为1loop: add a,r1 ;把数累加起来 inc r1 ;下一个数 djnz r0,loop;共100个数,未完转 LOOP循环sjmp $ ;完成 end
交口县13117813281: 跪求一个51单片机汇编语言的程序,要求就是红灯25秒,绿灯20秒,黄灯闪烁5秒,有个开关和复位按钮 - ?
柴点磺胺: 给你一个思路: 假设是单纯的红绿灯,无黄灯的话,设红灯30秒,绿灯30秒.需要两个状态量, 方向Dir(1:东西,0:南北),东西灯颜色LightcolorEW,南北灯颜色LightcolorNS. 此刻,东西方向亮红灯,则Dir=1,LightcolorEW=red,...
交口县13117813281: 单片机汇编按键程序 - ?
柴点磺胺: loop:jnb key1,tokey1 jnb key2,tokey2 jnb key3,tokey3 jnb key4,tokey4...ljmp loop tokey1:lcall d10ms ;按键去抖动 jb key1,loop lcall display ;数码管扫描程序 ajmp loop
交口县13117813281: 单片机程序汇编语言 - ?
柴点磺胺: 显示就不写了,估计你已经有了.K3 BIT P1.2 DAT EQU 30H........ADDDAT: JB K3,ADRET JNB K3,$ INC DAT ADRET: RET
交口县13117813281: 请问有哪位高手可以提供一个单片机汇编语言程序 - ?
柴点磺胺: 你说的是什么程序?1.在标准8051单片机P1.0口产生一个占空比50%的方波 2.方波频率为精确的50KHZ 3.8051单片机系统时钟12MHZ 方波频率为精确的50KHZ ,方波周期为20微妙, 占空比50%,半周期为10微妙 模式2就比较方便 MOV TMOD,#02H ;T0模式2(8位自动重装载) MOV TH0,#ECH ;10us溢出(晶振12MHZ的初始值) MOV TL0,#ECH SETB TR0 ;启动定时器T0 LOOP: JNB TF0,$ ;T0没有溢出等待 CLR TF0 ;产生溢出,清除标志 CPL P1.0 ;P1.0口取反输出 SJMP LOOP ;循环
交口县13117813281: 设计一个单片机汇编程序,要求一按开关,就出现锯齿波,三角波,方波,正弦波. - ?
柴点磺胺: 编程就是让计算机按你的方法运算罢了,而我们可以用很多方式,即使描述的在详细你也不一定就全理解,设计本身需要有很好的理论框架,根据这个框架去完成更科学性,你没有要求频率只是需要的是波形在示波器上显示,看来是个试验项目.等待高人