當前位置:首頁 » 編程語言 » 單片機的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);
}
}