请教51单片机的一个汇编程序
发布网友
发布时间:2022-04-30 18:08
我来回答
共4个回答
热心网友
时间:2022-06-28 21:05
ORG 0030H
MAIN: MOV P1,#0FH
MOV P2,#00H
JNB P1.3,F1
AJMP MAIN
F1: SETB P2.3
ACALL DEL
JNB P1.3,G3
JNB P1.0,F2
JNB P1.1,F3
JNB P1.2,F4
AJMP F1
F2: SETB P2.0
ACALL DEL
JNB P1.0,G0
JNB P1.1,G1
JNB P1.2,G2
JNB P1.3,G3
JNB P1.1,F3
JNB P1.2,F4
AJMP F2
F3: SETB P2.1
ACALL DEL
JNB P1.1,G1
JNB P1.0,G0
JNB P1.2,G2
JNB P1.3,G3
JNB P1.0,F2
JNB P1.2,F4
AJMP F3
F4: SETB P2.2
ACALL DEL
JNB P1.2,G2
JNB P1.0,G0
JNB P1.1,G1
JNB P1.3,G3
JNB P1.0,F2
JNB P1.1,F3
AJMP F4
G0: ACALL DEL
CLR P2.0
G1: ACALL DEL
CLR P2.1
G2: ACALL DEL
CLR P2.2
G3: ACALL DEL
CLR P2.3
AJMP MAIN
DEL:
MOV R7,#62H
DL1:
MOV R6,#7FH
DL0:
MOV R5,#11H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
NOP
RET
RET
END
热心网友
时间:2022-06-28 21:06
可以这样:
1,先设一个标志power,只有P1.3(按键)按下时power=1;(此时P2.3的灯亮)表示总开关打开。
2,按P1.0(按键),P1.1(按键),P1.2(按键)相关按键,都要看标志power,只有他为一,才可打开相应的灯。否则无效。
3,只要再按一下P1.3(按键),power=0,同时将P1.0,P1.1,P1.2全置零,即关掉所有的灯,包括P2.3的灯在内。
热心网友
时间:2022-06-28 21:06
上楼提供了方案,程序:
;主振频率6MHZ
;按键P2.0口输入,P1.0-P1.3循环显示,显示500ms熄灭
;每按一次键23H单元累加1,根据这个值决定指示灯的显示和熄灭
;我这样编可能你容易看得懂些
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TCT0 ;定时器0
ORG 0030H
;**************************************************
;程序初始化
MAIN: MOV SP,#60H ;栈指针60H
MOV 22H,#00H ;100ms计数器清0
SETB EA ;打开总中断
SETB ET0 ;T0中断允许
SETB IT0 ;T0优先中断
SETB TR0 ;T0不运行
;***************************************************
;主循环程序
LOOP: JB P2.0,LOOP ;按键判断P2.0口
KEY0: NOP ;这里最好加延时,我就不编了
JNB P2.0,KEY0 ;等待键放
INC 23H
MOV A,23H
CJNE A,#1,KEY1
MOV TH0,#3CH ;100ms预置初值
MOV TL0,#0B0H
CLR TR0 ;T0开始运行
MOV P1,#00H ;P1口无输出
SETB P1.0 ;P1.0输出高电平
KEY1: CJNE A,#2,KEY2
MOV TH0,#3CH ;100ms预置初值
MOV TL0,#0B0H
CLR TR0 ;T0开始运行
MOV P1,#00H ;P1口无输出
SETB P1.1 ;P1.1输出高电平
KEY2: CJNE A,#3,KEY3
MOV TH0,#3CH ;100ms预置初值
MOV TL0,#0B0H
CLR TR0 ;T0开始运行
MOV P1,#00H ;P1口无输出
SETB P1.2 ;P1.2输出高电平
KEY3: CJNE A,#4,KEY4
MOV TH0,#3CH ;100ms预置初值
MOV TL0,#0B0H
MOV P1,#00H ;P1口无输出
CLR TR0 ;T0开始运行
SETB P1.3 ;P1.3输出高电平
KEY4: CJNE A,#5,LOOP
CLR 23H
MOV P1,#00H ;P1口无输出
AJMP LOOP
;***************************************************
;定时器T0中断服务程序:
TCT0: PUSH ACC
PUSH PSW
INC 22H ;100ms单元加1
MOV A,22H
CJNE A,#10,EXIT
MOV 22H,#00H ;1s时间到
CJNE A,#1,TCT01
CLR P1.0
AJMP EXIT
TCT01: CJNE A,#2,TCT02
CLR P1.1
AJMP EXIT
TCT02: CJNE A,#3,TCT03
CLR P1.2
AJMP EXIT
TCT03: CJNE A,#4,TCT04
CLR P1.3
AJMP EXIT
TCT04: SETB TR0 ;T0停止运行
EXIT: POP PSW
POP ACC
RETI ;中断返回
;***************************************************
END
热心网友
时间:2022-06-28 21:07
流程图:
while(1)
{
if(P1.3==真){
P2.3亮;
if(P1.0==真)
P2.0亮;
if(P1.1==真)
P2.1亮;
if(P1.2==真)
P2.3亮;
}
else
灯全灭;
}
求51单片机译码程序汇编的。
B BIT P3.1 C BIT P3.2 Y0 BIT P1.0 Y1 BIT P1.1 Y2 BIT P1.2 Y3 BIT P1.3 Y4 BIT P1.4 Y5
求一个51单片机汇编语言 串口输出一行中文的程序
MAIN:MOVSCON,#40H;设置串行口工作方式1 MOVPCON,#0;设置波特率4800 MOVTMOD,#20H;波特率可根据需要自己修改 MOVTL1,#0FAH MOVTH1,#0FAH SETBTR1 MOVDPTR,#MSG;DPTR指向待输出字符串首地址 NEXT:MOVA,#0 MOVCA,@A+DPTR CJNEA,'$',NEXT1;字符串结尾?AJMPNEXT2 NEXT1:CLRTI MOVSBUF,A;...
MCS-51单片机,简单的一个汇编语言程序,计算分段函数的函数值。
add A, #1 mov Y, A ;Y = 2X+1 _END: sjmp
51单片机,怎么用汇编语言编程一个程序。实现4个按键控制4种报警声音(1...
没有四种声音的频率库,其他的给你做个示范吧:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV SP,#5FH MOV TMOD,#11H SETB EA SETB ET0 SETB ET1 LOOP:LCALL KEYSCAN MOV A,R2 JNZ LP1 MOV DPTR,#TAB110 SJMP LPRUN LP1:DEC A JNZ LP2 MOV DPTR,#TAB119 SJMP LPRUN LP2:DEC A JNZ ...
51单片机编程题,用汇编语言怎么做?
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) { } } 汇编语言,才看到,算了,你别人的回答...
51单片机的汇编指令是什么?
在51单片机汇编语言中DPTR只有加1指令即:INC DPTR,减1指令是没有的,所以需要用户自己来编制,以下是具体代码:DPTRDEC:CLR C MOV A,DPL SUBB A,#1 MOV DPL,A MOV A,DPH SUBB A,#0 MOV DPH,A RET 编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算...
求一个51单片机延时1秒的程序,用汇编!!
MOV R7,#10 D1: MOV R6,#200 D2: MOV R5,#250 DJNZ R5,DJNZ R6,D2 DJNZ R7,D1 RET 说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等 2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5 ...
谁能给我一些简单的51单片机的汇编程序,然后用c语言翻译一下啊
这个是P2口 8个灯的循环亮程序;顺便帮你写个c语言的程序,高手勿喷啊 include<reg51.h> include<intrins.h> define uint unsigned int define uchar unsigned char void delay();void main(){ uchar a;P2=0x01;while(1){ for(a=0;a<7;a++){ P2=_crol_(P1,1);delay();} for(a=0...
51单片机汇编程序问题
MOV TMOD, #01H ;工作方式1 MOV TH0, #3CH ;装入初值 定时50毫秒 MOV TL0, #0B0H SETB ET0 SETB EA SETB TR0 ;定时器0控制位 ; ---此处,缺少循环,自动往下执行到中断程序去了 SJMP $ ;---加上这行,再试试看。INT_T0:MOV TH0, #3...
51单片机 汇编~ JNB F0,LOOP2;
单片机里面,有个CPU,它执行我们编写的程序。单片机里面,还有个定时器,它和CPU是并行工作的。在:TTCO_1S: MOV TMOD, #01H;设置定时器为工作方式1 ……已经设置、启动了定时器T0,还开放了T0的中断。那么,这条指令:LOOP2: JNB F0, LOOP2;执行时,T0也在计时,并且会偷偷...