51个c语言程序,求助一个关于51单片机的C语言程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

求助一个程序

程序要求是,一个用AT89x51单片机控制利用霍尔传感器测电机转速,然后将数据发送给

数码管。大体程序已经完成,但是,一直用KEIL调试不成,烧到单片机里无法操作。可能其中有些许错误,希望有这方面的大神对小弟小小的指导一下。

#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};//数码管

uchar code zifu[9]={"zhuansu= "}; //转速字符空格

uchar code enter[] = {"/n"}; //换行字符 uint fan100;//转速值

uchar fan[3];//存转速的百十个位

uint count;

uint T0count;//进入T0的中断次数

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) //数码管动态显示

{

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) //串口发送函数

{

uchar ii;

for(ii=0;ii<9;ii++)

{ SBUF =zifu[ii];

while(RI==0);

RI=0;

}

for(ii=0;ii<3;ii++) //再发送百位

{ SBUF =fan[ii]+0x30;

while(RI==0);

RI=0;

} //等待发送完毕 for(ii=0;ii<2;ii++) //再发送十位

{ SBUF =fan[ii]+0x30;

while(RI==0);

RI=0;

} //等待发送完毕 for(ii=0;ii<1;ii++) //再发送个位

{ SBUF =fan[ii]+0x30;

while(RI==0);

RI=0;

} //等待发送完毕 for(ii=0;ii<2;ii++) //发送换行

{ SBUF =enter[ii];

while(RI==0);

RI=0;

} //等待发送完毕

} /* 主函数*/

void main()

{ count =0; //初始化

init_es ();

init_T0();

T0count=0;

IP= 2 ; //INT0的优先级最低

IE = 0X83; //开中断

IT0=1;

while(1)

{ display_LED(); // 无限循坏数码管 等待中断发生

}

}

/*串口*/

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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值