导航:首页 > 操作系统 > 单片机程序题可以切换吗

单片机程序题可以切换吗

发布时间:2024-07-04 19:12:09

⑴ 51单片机1按键切换3种不同状态的c程序

主程序大致是这样的
flag=0;//记录按键次数
While(1)
{
if(key==0){delayms(20);if(key==0)flag++;}//按键检测
if(flag==3)flag=0;
if(flag==0){正向流水}
else if(flag==1){反向流水}
else {间隔流水}
}存在问题,由于流水灯执行时间较长,因此对按键响应缓慢,可以在流水灯之间加入按键检测语句,当检测到按键按下时,用break语句退出当前循环

⑵ 鍗旷墖链哄垽鏂 1.宸ヤ綔瀵勫瓨鍣ㄧ粍鏄阃氲繃浣岖疆PSW涓镄凴S0鍜孯S1𨱒ュ垏鎹 2.涓庤繍绠楀彲浠ュ皢涓涓瀛楄妭涓镄

1銆佸
2銆佸
3銆侀敊
4銆侀敊
鍗旷墖链虹▼搴忓垎鏋愰
1銆佸凡鐭A=40H锛孯O=50H,(40H锛=30H 锛50H锛=10H 璇锋寚鍑烘疮𨱒℃寚浠ゆ墽琛屽悗鐩稿簲锛屽崟鍏冨唴瀹圭殑鍙桦寲
1.MOVA锛#40H A=40H
2.MOVA 40H A=30H
3.MOVA, RO A=50H
4.MOV A,@RO A=30H
5.SWAP A A=03H

2锛屼慨鏀逛简涓涓嬬▼搴
MOV R3 #4
K3:MOV R2,#250
K2:MOV R1,#250
K1:NOP
NOP
DJNZ R1,K1
DJNZ R2,K2
DJNZ R3, k3
寤舵椂镞堕棿=4*250*250*4+3*250*4+3*4=1003012寰绉掞纴绾︾瓑浜1绉掋

缂栫▼棰桡细
1锛
MOV A,#0A4H
ADD A,#0E7H
MOV 40H,A
MOV A,12H
ADDC A,#0FH
MOV 41H,A
2:
CJNE A,#100,CMA
RET
CMA:
JC CMA1
MOV P1,#0
RET
CMA1:
MOV P1,#0FFH
RET
3:
MOV A,4FH
ADD A,#80H
MOV 30H,A
MOV A,23H
ADDC A,#0EH
MOV 31H,A
RET
4:
LSD:
MOV A,#0FEH
LSD1:
MOV P1,A
LCALL DELAY
SJMP LSD1
DELAY:
MOV R2,#100
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET

⑶ 单片机C语言编程问题。怎么实现按键切换两个子程序啊。。(时钟和温度)

应该用一个标志位,如果你这种是普通的按键,即按下时是低电平,松开时是高电平的,大概这样写,在main声明一个变量,作为标志位.
char Flag;
然后按键按下时,直到弹起按键才改变Flag的状态。
if(!Key)
{
while(!Key);
Flag=~Flag;
}
if(Flag)
{
time = hour*100 + min;
ShowTest(time);
delay();
}

else
{
gettempts();
display(t);
}
把这个放在while(1)中,就可以了。
希望我的回答对你有帮助,有什么问题欢迎一起探讨。

⑷ 关于单片机的问题,如果程序中要要到三组工作寄存器Rn,如何切换SP的初值是否要修改若要,如何修改

以下是个示范,依次切换到工作区0到3
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH ;将SP设置到60H以后的RAM区
MOV A,#0
LCALL SETRN
LCALL DELAY
MOV A,#1
LCALL SETRN
LCALL DELAY
MOV A,#2
LCALL SETRN
LCALL DELAY
MOV A,#3
LCALL SETRN
LCALL DELAY
SJMP $
SETRN:
JNZ SETRN1 ;A=0工作区0
CLR RS0
CLR RS1
RET

SETRN1:
JNZ SETRN2 ;A=1工作区1
SETB RS0
CLR RS1
RET
SETRN2:
JNZ SETRN3 ;A=2工作区2
CLR RS0
SETB RS1
RET
SETRN3:
JNZ SETRN1 ;A=3工作区3
SETB RS0
SETB RS1
RET
DELAY:
MOV R0,#10
DELAY1:
MOV R1,#100
DJNZ R1,$
DJNZ R0,DELAY1
RET

⑸ 鍗旷墖链哄备綍鐢ㄤ腑鏂鍒囨崲绋嫔簭锛屽氨鏄鎴戠幇鍦ㄧ敤鍗旷墖链哄疄鐜板姛鑳紸鍜孊锛岀敤涓鏂浣滀负AB绋嫔簭镄勫垏鎹锛岀敤C璇瑷瑕佹

棣栧厛瀹氢箟鍏ㄥ眬鍙橀噺int_num=0;
灏嗕互涓嬩唬镰佹斁鍏ヤ腑鏂链嶅姟鍑芥暟锛
void INT_X(void) interrupt X
{
switch(int_num) //鍒ゆ柇浠诲姟浠g爜
{
case 0;//浠诲姟A
//杩欓噷濉浠诲姟A绋嫔簭娈
break;

case 1;//浠诲姟B
//杩欓噷濉浠诲姟A绋嫔簭娈
break;

default:

break;

}
int_num++;
if(int_num>1)int_num=0;

}

⑹ 单片机C语言程序设计题

这是两个题啊。哈哈好做,第一个有C语言的冒泡法排序,第二个用中断,读,输出就可以

阅读全文

与单片机程序题可以切换吗相关的资料

热点内容
服务器的证件是什么 浏览:534
linuxgraphics 浏览:137
ACPI编译工具MaciASL 浏览:895
导线点加密技巧 浏览:103
闪迪加密软件如何去除 浏览:560
格力压缩机技术 浏览:7
app下单约妹子的什么语音 浏览:834
华为软件加密怎么关闭 浏览:325
安卓手机q系统怎么用 浏览:105
一个淡定的程序员 浏览:423
怎么在dos窗口打开python 浏览:591
怎么通过网页取服务器ip 浏览:789
android系统发展前景 浏览:852
了8解压密码 浏览:633
单片机的定时器资源是计数器 浏览:628
黄钻石的图标是什么app 浏览:774
mac白色文件夹问号 浏览:720
怎么申请邮箱的服务器 浏览:13
c项目两个工程怎么编译 浏览:645
知乎app有什么作用 浏览:451