MAIN_A:
LCALL MAIN1
LCALL MAIN2
MOV A,29H
CLR C
SUBB A,27H
JC START
CJNE A,#7,NEXT1
LJMP START
NEXT1:
JC NEXT1_1
CLR P3.1
AJMP START
NEXT1_1:
CJNE A,#4,NEXT1_2
LJMP START
NEXT1_2:
JC NEXT1_3
LJMP START
NEXT1_3:
SETB P3.1
AJMP START
MAIN_B:
LCALL MAIN1
LCALL MAIN3
MOV A,29H
CLR C
SUBB A,25H
JC START
CJNE A,#7,NEXT2
LJMP START
NEXT2:
JC NEXT2_1
CLR P3.0
MOV A,29H
AJMP START
NEXT2_1:
CJNE A,#4,NEXT2_2
LJMP START
NEXT2_2:
JC NEXT2_3
LJMP START
NEXT2_3:
SETB P3.0
AJMP START
MIAN_A MAIN_B要放在一个程序中运行,怎样放才能让运行完MAIN_A继续运行MAIN_B
这个我试过 貌似行不通的 对程序会有影响 有别的办法吗
追答这只是程序跳转问题,不会有什么影响,除非你的程序写的有问题,定义冲突什么的
追问哦 我试试
51单片机中,我想满足两个条件中的任意一个后执行另一个程序,要如何
C语言的话,逻辑或就可以实现,比如:if(a || b){ ...} 汇编的话,按以下方法:CJNE R1,#a,NXT SJMP CONTINUE NXT:CJNE R1,#b,NO CONTINUE:...NO:RET
单片机如何实现一个按键切换两个程序
include<reg51.h>sbit key=P1^0;bit flag=0;void A(void){...}void B(void){...}main(){while(1) { if(key==0) { while(key==0); flag=~flag; } if(flag)B(); else A(); }}
在51单片机中,不同类型的数之间能相互赋值吗?它们的指针呢,能相互交换...
不同类型之间是不能直接赋值的,要经过类型的强制转换:int型占4个字节,char型占1个字节,小的给大的类型一般的编译器是可以通过的,但大的给小的你就要指明了 举个例子:int a=2;char b=5;a = b; \/*这种操作一般是允许的*\/ b = (char)a; \/*这需要类型转换*\/ ...
51单片机中if语句的一个问题
把这个程序反汇编以后可以看到在C:0x0018行跳回主函数入口C0003 C:0x0000 02000F LJMP C:000F 4: void main(void)5: { 6: if(k)C:0x0003 E508 MOV A,k(0x08)C:0x0005 6004 JZ C:000B 7: P0=0xff;8: else C:0x0007 7580FF MOV P...
MCS-51单片机,逻辑与和高低位指令SWAP的问题?
情况一:假如你要将A的高四位和另一个4位(0000$%&@)的数作比较,那就应该选用上面程序那样,使用SWAP。因为你直接把低4位屏蔽而直接取高4位,这样的结果是A=***0000,其中前面的4位星是代表你原来A中的高4位。但要比较一个数,不能是0000***与另一个数0000$%&@比较,而应该是0000***...
51单片机编程问题,为何程序只能执行键盘的第一次指令?以后的指令不执行...
你编程大概是受C的影响,单片机中主程序要成一个循环,才能保证系统可靠运行。org 0000h main:mov a,p2 anl a,#0fh cjne a,#0fh,key mov a,#00h ajmp main key:cjne a,0eh,n1 mov p1,#10101010b ajmp main n1:cjne a,0dh,n2 mov p1,#10111010b ajmp main n2:cjne ...
51单片机 已知(A)=7AH,(B)=02H,(R0)=30H,(30H)=A5H,(PSW)=80H,写出以下...
我个人认为你这题有问题,执行第一条后(A)=30H,(R0)=7AH。执行第二条后(A)=A5H,(30H)=30H。第三条时就出问题了,第三条指令是将A中的内容与R0所指向的地址里面的内容进行交换(因为(A)=A5H,(R0)=7AH执行第三条时就是A与7AH中的内容进行交换)。如果是单片机复位后来执行这程序那么(...
51单片机指令中怎么区分数据和地址?
可以分别对应的是C语言的常数,变量,指针。。。20H在C51默认情况下是定义的第一个全局变量的存储单元。。。如果C51程序第一条你写了,char i;这个i的地址就是20H,所以可以把直接寻址看作变量。。。MOV 30H,20H就是C语言的b=a;立即数寻址,b=20,间接寻址,b=*a;C51就是这么转汇编的。。。
51单片机中怎样比较两个数的大小
jc是判断借位标志CY的跳转指令,程序应该有做减法的指令,当A<B且做A-B运算后,发生借位,此时硬件置CY为1
两个51单片机如何通过i2c通讯?
一般情况下,要进行I2C通讯,你最起码其中有一个芯片要本身就带有I2C通讯接口,用这个带有I2C接口的芯片来作从器件,这样就相对好处理一点。你要是两个都不带这个接口,来模拟的话,很有难度。除非你对I2C协议很清楚,不过从楼主的提问来看,估计就不怎么熟悉这种协议。所以建议还是用别的通讯方式吧,...