當前位置:首頁 » 編程語言 » 單片機c語言編程例

單片機c語言編程例

發布時間: 2024-08-26 12:13:51

⑴ 單片機題目,用c語言,求助!!

單片機題目,用四位一體共陰數碼管,P0口輸出段碼,P2口輸出位碼。用定時器T0定時50ms,採用中斷方式,對中斷計數,中斷20次就為1秒,計數值加一。三個獨立按鍵接在P3.5、P3.6、P3.7上。模擬圖和效果見下圖。

⑵ 求解一道單片機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);
}
}
}
}

⑶ 51單片機使用T0和T1外部脈沖計數,C語言如何編程

1、使用T0和T1外部脈沖計數,控制兩個電機,到1700個脈沖電機停止,
--統計脈沖個數,用外部中斷更好。
--T0和T1,留著定時用。
用四個按鍵控制,按鍵1控制電機正轉,按鍵2控制電機反轉,按鍵3控制電機1正轉,按鍵4控制電機2正轉。


2、常式:

#include<reg51.h>
sbitk1=?;//自己定義
sbitk2=?
sbitk3=?
sbitk4=?
sbitDIAN1=?
sbitDIAN2=?
sbitDIAN3=?
sbitDIAN4=?
sbitSEN1=?
sbitSEN2=?
voiddelay(unsignedintx)
{
unsignedintm,n;
for(m=x;m>0;m--)for(n=115;n>0;n--);
}
voidmain(void)
{
TMOD=0x55;
IE=0x8a;
while(1){
if(!k1){
delay(10);
if(!k1){
while(!k1);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=0;DIAN2=1;
SEN1=1;
TR0=1;
}
}
if(!k2){
delay(10);
if(!k2){
while(!k2);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=1;DIAN2=0;
SEN1=1;
TR0=1;
}
}
if(!k3){
delay(10);
if(!k3){
while(!k3);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=0;DIAN4=1;
SEN2=1;
TR1=1;
}
}
if(!k4){
delay(10);
if(!k4){
while(!k4);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=1;DIAN4=0;
SEN2=1;
TR1=1;
}
}
}
}

⑷ 求各位大神解決單片機程序C語言代碼跟解釋

11.程序如下:
#include<reg52.h>
//包含單片機寄存器的頭文件
#include<intrins.h>
#define
uchar
unsigned
char
//定義一下方便使用
#define
uint
unsigned
int
//定義一下方便使用
uchar
num,num1;
uchar
code
table[]={
//數字編碼0~9
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
void
main()
//主程序
{
TMOD=0x01;
//定時器T0,工作方式1
TH0=(65536-50000)/256;
//裝載初值,中斷一次50ms
TL0=(65536-50000)%256;
EA=1;
//開總中斷
ET0=1;
//開T0中斷
TR0=1;
//啟動定時器
while(1)
//大循環
{
P2=0xaa;
//數碼管位選,10101010b
P0=table[num];
//段選信號
}
}
void
T0_time()
interrupt
1
//中斷函數
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
if(num1==20)
//中斷20次為1秒
{num1=0;
num++;
//每1秒加1
if(num==10)
//數碼管顯示的編碼0~9
ET0=0;
for(int
i=0;i<10000;i++)
{
P1=0xff;
delay();
P1=0xfe;
delay();
}
num=0;
}
}
void
delay()();
{
unsigned
char
i;
for(i=20;i>0;i--);
}
12.#include
<reg52.h>
#include
<intrins.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
void
DelayMS(uint
x)
{
uchar
t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void
main()
{
uchar
i;
P2=0x01;
while(1)
{
for(i=7;i>0;i--)
{
P2=_crol_(P2,1);
DelayMS(150);
}
for(i=7;i>0;i--)
{
P2=_cror_(P2,2);
DelayMS(150);
}
}
}

⑸ 求一個51單片機C語言程序編程

實驗內容:單片機甲、乙進行雙機串列通信,甲機通過串口控制乙機LED閃爍(如下圖所示,要求利用晶元MAX232),雙方的晶振頻率均為11.0592MHz(波特率為9600kb/s)要求:甲機按開關K1一次,發送字元「A」給乙機,點亮燈D1與D2;按開關K1兩次,發送字元「B」給乙機,點亮燈D3與D4;按開關K1三次,發送字元「C」給乙機,全部點亮;按下第四次K1,燈全滅


#include<reg51.h> /*甲機*/

sbit k=P1^0;

sbit P00=P0^0;

sbit P03=P0^3;

unsignedchari,NO;

voidmain(void) /*主函數*/

{

SCON=0x40; /*方式1隻發送,不接收*/TMOD=0x20;

TH1=0xfd; /*給定時器T1賦初值,波特率為9600*/

TL1=0xfd;

TR1=1;

k=1;

NO=0;

while(1)

{

if(k==0)

{while(k==0);

NO=(NO+1)%4;

}

switch(NO)

{case0:P0=0xff;

break;

case1:P00=0;P03=1;

SBUF='A';

while(TI==0);

TI=0;

break;

case2:P00=1;

P03=0;

SBUF='B';

while(TI==0);

TI=0;

break;

case3:P00=0;

P03=0;

SBUF='C';

while(TI==0);

TI=0;

break;

}

}

for(i=250;i>0;i--){;} //延時

}

#include<reg51.h> /*乙機*/

sbit k=P1^0;

sbit P00=P0^0;

sbit P03=P0^3;

unsignedcharNO;

voidmain() /*主函數*/

{

SCON=0x50; /*設置串口為方式3,允許接收REN=1*/

TMOD=0x20;

TH1=0xfd; /*給定時器T1賦初值,波特率為9600*/

TL1=0xfd;

TR1=1;

P0=0xff;

while(RI==0);/*檢測接收中斷標志RI,RI=0,未接收完,則循環等待*/

{RI=0;

switch(SBUF)

{case'A':P00=0;P03=1;

break;

case'B':P00=1;P03=0;

break;

case'C':P00=P03=0;

break;

}

}

}


熱點內容
如何查看自己電腦的所有配置 發布:2024-11-25 10:14:02 瀏覽:771
java編譯器偽編譯指什麼 發布:2024-11-25 10:08:53 瀏覽:961
amax伺服器默認地址 發布:2024-11-25 10:07:20 瀏覽:318
甘肅省浪潮伺服器雲伺服器 發布:2024-11-25 10:07:17 瀏覽:522
android手環 發布:2024-11-25 10:03:55 瀏覽:163
如何將安卓機設置為蘋果機 發布:2024-11-25 09:41:24 瀏覽:970
伺服器屏蔽一段ip 發布:2024-11-25 08:52:06 瀏覽:100
售茶源碼 發布:2024-11-25 08:37:29 瀏覽:463
壓縮包改直鏈 發布:2024-11-25 08:34:33 瀏覽:612
安卓機的照片如何傳送到蘋果機上 發布:2024-11-25 08:32:48 瀏覽:918