電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 2573|回復(fù): 4
收起左側(cè)

求助一個關(guān)于51單片機(jī)的C語言程序

[復(fù)制鏈接]

598

主題

943

帖子

5138

積分

四級會員

Rank: 4

積分
5138
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-8-1 15:09:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助一個程序
程序要求是,一個用AT89x51單片機(jī)控制利用霍爾傳感器測電機(jī)轉(zhuǎn)速,然后將數(shù)據(jù)發(fā)送給
數(shù)碼管。大體程序已經(jīng)完成,但是,一直用KEIL調(diào)試不成,燒到單片機(jī)里無法操作。可能其中有些許錯誤,希望有這方面的大神對小弟小小的指導(dǎo)一下。


#include"at89x51.h"
#define uint unsigned int
#define uchar unsigned char
uchar code duanma[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管
uchar code zifu[9]={"zhuansu= "}; //轉(zhuǎn)速字符空格
uchar code enter[] = {"/n"}; //換行字符 uint fan100;//轉(zhuǎn)速值
uchar fan[3];//存轉(zhuǎn)速的百十個位
uint count;
uint T0count;//進(jìn)入T0的中斷次數(shù)
void delay_ms(uint z)
{
uint x,y; //延時程序
for(x=z;x>0;x--)
for(y=240;y>0;y--);
}
void init_es (void)//初始化串口
{
SCON=0x40; //方式1
TH1 = 0xfd; //晶振11.059 波特率9600
TL1 = 0xfd;
TMOD= 0X20;
TR1 =1;
} void init_T0(void) //初始化定時器
{
TMOD = 0x21;
TH0 = 0X3c;
TL0 = 0Xb0;
} void display_LED(void) //數(shù)碼管動態(tài)顯示
{
P0=0x01;
P1=duanma[fan[0]];
delay_ms(100);
P0= 0x20;
P1=duanma[fan[1]];
delay_ms(100);
P0=0x40;
P1=duanma[fan[2]];
delay_ms(100);
} void sent_es(void) //串口發(fā)送函數(shù)
{
uchar ii;
for(ii=0;ii<9;ii++)
{ SBUF =zifu[ii];
while(RI==0);
RI=0;

回復(fù)

使用道具 舉報

600

主題

954

帖子

5061

積分

四級會員

Rank: 4

積分
5061
沙發(fā)
發(fā)表于 2022-8-1 15:10:24 | 只看該作者
}
for(ii=0;ii<3;ii++) //再發(fā)送百位
{ SBUF =fan[ii]+0x30;
while(RI==0);
RI=0;
} //等待發(fā)送完畢 for(ii=0;ii<2;ii++) //再發(fā)送十位
{ SBUF =fan[ii]+0x30;
while(RI==0);
RI=0;
} //等待發(fā)送完畢 for(ii=0;ii<1;ii++) //再發(fā)送個位
{ SBUF =fan[ii]+0x30;
while(RI==0);
RI=0;
} //等待發(fā)送完畢 for(ii=0;ii<2;ii++) //發(fā)送換行
{ SBUF =enter[ii];
while(RI==0);
RI=0;
} //等待發(fā)送完畢
} /* 主函數(shù)*/
void main()
{ count =0; //初始化
init_es ();
init_T0();
T0count=0;
IP= 2 ; //INT0的優(yōu)先級最低
IE = 0X83; //開中斷
IT0=1;
while(1)
{ display_LED(); // 無限循壞數(shù)碼管 等待中斷發(fā)生
}
}
/*串口*/
void int0interrupt(void) interrupt 0
{
count++;
}
void T0interrupt(void) interrupt 1
{
TH0 = 0x3c ;
TL0 = 0xb0 ;
T0count++;
if(T0count>20 )
{ T0count=0;
fan100=count;
count=0;
fan[0] = fan100/100;
fan[1] = (fan100%100)/10;
fan[2] = fan100%10;
sent_es();
}
}
回復(fù) 支持 反對

使用道具 舉報

600

主題

954

帖子

5061

積分

四級會員

Rank: 4

積分
5061
板凳
發(fā)表于 2022-8-1 15:11:21 | 只看該作者
現(xiàn)在在外面,沒電腦幫你看,幫你頂個
回復(fù) 支持 反對

使用道具 舉報

578

主題

858

帖子

4821

積分

四級會員

Rank: 4

積分
4821
地板
發(fā)表于 2022-8-1 15:11:28 | 只看該作者
幫頂
回復(fù) 支持 反對

使用道具 舉報

591

主題

1772

帖子

5770

積分

四級會員

Rank: 4

積分
5770
5#
發(fā)表于 2022-8-1 15:12:22 | 只看該作者
把keil報錯發(fā)出來,這個一般人都會略過沒空一行一行看給你回復(fù),把報錯的發(fā)出來快速定位錯誤,回復(fù)的概率高點(diǎn)
回復(fù) 支持 反對

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表