当前位置:首页 » 编程语言 » 单片机的c语言设计答案
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

单片机的c语言设计答案

发布时间: 2022-04-21 13:14:39

❶ C51单片机程序设计题,要求用c语言做,模拟交通灯控制单片机电路,答案要详细具体。

晚上随手写,也未调试,权当看看

程序有不严谨地方还得调试修改

#include<REGX51.H>

#defineSTATUS_1S 1

#defineSTATUS_2S 2

#defineSTATUS_3S 3

#defineSTATUS_4S 4

#defineSTATUS_5S 5

#defineSTATUS_15S 15

#defineSTATUS_28S 28

#defineSTATUS_29S 29

#defineSTATUS_30S 30

unsignedcharflag,status,status_temp=1,status_temp_;

sbitK1 = P0^0;

sbitK2 = P0^1;

sbitRLED = P0^2;

sbitYLED = P0^3;

sbitGLED = P0^4;

voidInit(void)

{

ET0=1;

TR0=1;

RLED=0; //亮

YLED=0;

GLED=0;

while(status_temp)

{

switch(status)

{

caseSTATUS_1S: //1S

{

RLED=1; //灭,闪一次

YLED=1;

GLED=1;

} break;

caseSTATUS_2S: //1S

{

RLED=0; //亮,闪一次

YLED=0;

GLED=0;

} break;

caseSTATUS_3S: //1S

{

RLED=1; //灭

YLED=1;

GLED=1;

status_temp=0;

} break;

}

}

status_temp=1;

ET0=0;

TR0=0;

}

voidInit_Timer0(void)

{

TMOD=0x01;

// ET0=1;

// TR0=1;

EA=1;

TH0=0X3C;

TL0=0XB0; //未计算,偷楼上的

}

voidM_Start(void)

{

TH0=0X3C;

TL0=0XB0;

ET0=1;

TR0=1;

RLED=0; //红亮

while(status_temp)

{

switch(status)

{

caseSTATUS_1S:

{

if(status_temp_==1)

{

YLED=0;

}

} break;

caseSTATUS_2S:

{

if(status_temp_==1)

{

YLED=1;

}

} break;

caseSTATUS_3S:

{

if(status_temp_==1)

{

YLED=0;

status_temp_=0;

}

} break;

caseSTATUS_15S: //15S灭,绿亮

{

RLED=1;

GLED=0;

} break;

caseSTATUS_28S:

{

GLED=1;

} break;

caseSTATUS_29S:

{

GLED=0;

} break;

caseSTATUS_30S:

{

GLED=1;

status=0;

status_temp_=1;

} break;

}

}

ET0=0;

TR0=0;

status=0;

status_temp=1;

YLED=1;

}

voidM_End(void)

{

TH0=0X3C;

TL0=0XB0;

ET0=1;

TR0=1;

RLED=0; //亮1次

YLED=0;

GLED=0;

while(status_temp)

{

switch(status)

{

caseSTATUS_1S: //1S

{

RLED=1; //灭一次

YLED=1;

GLED=1;

} break;

caseSTATUS_2S: //1S

{

RLED=0; //亮二次

YLED=0;

GLED=0;

} break;

caseSTATUS_3S: //1S

{

RLED=1; ////灭二次

YLED=1;

GLED=1;

} break;

caseSTATUS_4S: //1S

{

RLED=0; ////亮三次

YLED=0;

GLED=0;

} break;

caseSTATUS_5S: //1S

{

RLED=1; ////灭三次

YLED=1;

GLED=1;

status_temp=0;

} break;

}

}

status_temp=1;

ET0=0;

TR0=0;

}

main()

{

Init();//单片机初始化

Init_Timer0();//定时器初始化

while(1)

{

if(K1==0)

M_Start();//模拟开始

if(K2==0)

M_End();//模拟结束

}

}

voidinterrupt_time0()interrupt1 //核对头文件,一致就好

{

TH0=0X3C;

TL0=0XB0;

flag++;

if(flag==20)

{

status++;

flag=0;

}

}

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

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

❸ 单片机的c语言,求答案。。。。坐等,两个题的程序

1:
CLRRAM:
MOV DPTR,#7000H
MOV R2,#0
LOOP:
CLR A
MOVX @DPR,A
INC DPTR
INC R2
CJNE R2,#0FFH,LOOP
RET
2:
BCDCHG:
MOV A,30H
ANL A,#0FH
CJNE A,#10,LP1
LP1:
JNC ERR
LP2:
PUSH ACC
MOV A,30H
SWAP A
ANL A,#0FH
MOV B,#10
MUL AB
MOV B,A
POP ACC
ADD A,B
CJNE A,#100,LP3
LP3:
JNC ERR
RTN:
MOV DPTR,#1000H
MOVX @DPTR,A
RET
ERR:
MOV A,#0FFH
SJMP RTN
3:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV A,#0FEH
LOOP:
MOV P1,A
LCALL DELAY
RL A
SJMP LOOP
DELAY:
MOV R2,#5
DELAY1:
MOV R3,#126
DELAY2:
MOV R4,#200
DJNZ R4,$
DJNZ R3,DELAY2
DJNZ R2,DELAY1
RET
END

❹ 单片机C语言,题目如下,帮我理解理解,题目和答案都在下面

频率控制的中断服务程序,需要做些修改:
voidtimer0()interrupt1//定时器0中断
{
TR0=0;//进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++;
if(tt>=10)//10*frett应该放在前面
{
if(flag<40)//以下几个if分别用来选取不同的频率{
{
tt=0;
fre=50000;
beep=~beep;
}
if(flag>=40&&flag<80)
{
tt=0;
fre=5000;//这里数值修改
beep=~beep;
}
if(flag>=80&&flag<120)
{
tt=0;
fre=1000;//这里数值修改
beep=~beep;
}
if(flag>=120&&flag<160)
{
tt=0;
fre=500;//这里数值修改
beep=~beep;
}
if(flag>=160&&flag<200)
{
tt=0;
fre=250;//这里数值修改
beep=~beep;
}
if(flag>=200&&flag<240)
{
tt=0;
fre=125;//这里数值修改
beep=~beep;
}
if(flag>=240&&flag<280)
{
tt=0;
fre=62;//这里数值修改
beep=~beep;
}
if(flag>=280&&flag<320)
{
tt=0;
fre=50;//这里数值修改已经是1K了
beep=~beep;
}
if(flag>=320&&flag<360)
{
tt=0;
fre=25;//这里数值修改这里是2K了
beep=~beep;
}
TR0=1;
}

❺ 跪求:单片机的c语言应用程序设计 参考答案

建议你去爱问资料共享搜一下!估计会有的

❻ 求一份单片机的C语言程序设计与应用 - 基于Proteus仿真 第二版 课后答案 (姜志海 赵艳雷),谢谢啦

这本书的作者都是我的老师啊,不过我这没有这本书的答案啊,有问题可以问我,我可能可以帮到你。呵呵

❼ 求解一道单片机C语言编程题,急

#include"AT89X52.h"

sbit BUTTON = P1^1;
sbite LED = P1^0;
unsigned int reg;
void main(void)
{
while(1)
{
if (!BUTTON)
{
reg= 5000;
while(--reg);
if (!BUTTON)
{
LED = ~LED;
while(!BUTTON);
}
}
}
}

❽ C语言单片机,彩灯控制器的设计,读程序回答问题。

//稍微改了一下加了一个暂停键,中断方式,你需要将该键接到P3.2
#include<reg51.h>
//包含单片机寄存器的头文件
#include
<intrins.h>
/*****************************
函数功能:延时一段时间
*****************************/
unsigned
char
L[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
unsigned
char
L1[8]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
bit
pause;
void
ex0isr()
interrupt
0
{
pause=~pause;
}
void
delay1s(unsigned
int
i)
{
unsigned
int
j;
while(i--)
{
for(j=0;j<=151;j++){;}
}
while(pause);//实现暂停,键按一下暂停,再按一下恢复。
}
/*****************************
函数功能:主函数
*****************************/
void
main(void)
{
unsigned
char
i,j;
P0
=
0x00;
P1
=
0x00;
P2
=
0x00;
P3
=
0x00;
pause=0;
while(1)
{
for(j=0;j<8;j++)
{
P0=L[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P1=L[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P2=L[j];
delay1s(100);
};
for(i=0;i<8;i++)
{
P3=L[i];
delay1s(100);
};
for(j=0;j<8;j++)
{
P0=L1[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P1=L1[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P2=L1[j];
delay1s(100);
};
for(i=0;i<8;i++)
{
P3=L1[i];
delay1s(100);
};
}
}

❾ 单片机C语言设计编程题

#include sbit pluse=P1^0; void t0isr() interrupt 1 { TH1=(65536-10000)/256; TL1=(65536-10000)%256; pluse=~pluse; } main() { TMOD=0x10; TH1=(65536-10000)/256; TL1=(65536-10000)%256; TR1=1; ET1=1; EA=1; while(1); }

❿ 求这个单片机题目的答案,基于51单片机,要求用c语言编程并在开发板上实现。来大神

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P1^0;
//延时
void DelayMS(uint ms)
{
uchar
i;
while(ms--)
for(i=0;i<120;i++);
}
//向串口发送字符
void Putc_to_SerialPort(uchar c)
{
SBUF=c;
while(TI==0);
TI=0;
}
//主程序
void main()
{
uchar
Operation_No=0;
SCON=0x40; //串口模式1
TMOD=0x20; //T1工作模式2
PCON=0x00; //波特率不倍增
TH1=0xfd;
TL1=0xfd;
TI=0;
TR1=1;
while(1)
{
if(K1==0) //按下K1时选择操作代码0,1,2,3
{
while(K1==0);
Operation_No=(Operation_No+1)%2;
}
Putc_to_SerialPort('A'+Operation_No);
DelayMS(100);
}
}

//乙机程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0;
sfr LED=P0;
//延时
void DelayMS(uint ms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=20)
{
num=0;
LED=~LED;
}
}
//主程序
void main()
{
SCON=0x50; //串口模式1,允许接收
TMOD=0x21; //T1工作模式2
PCON=0x00; //波特率不倍增
TH1=0xfd; //波特率9600
TL1=0xfd;
RI=0;
TR1=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
LED=0xff;
while(1)
{
if(RI) //收到则
{
RI=0;
switch(SBUF)//根据所收到的不同命令字符完成不同动作
{
case'A': TR0=1;break; //LED闪烁
case'B': LED=0xff;TR0=0;break; //LED灭
}
}
DelayMS(100);
}
}