在STC单片机里写了个串口发送程序,运行正确,可把这程序烧到89C2051里面就不好使!下面试我的程序

在STC单片机里写了个串口发送程序,运行正确,可把这程序烧到89C2051里面就不好使!下面试我的程序,第1张

用C语言实现的,就是方法笨点

#include <reg51h>

#include <stringh>

unsigned char code ch[2][80]={{0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09,0x01,0x03,0x05,0x07,0x09},

{0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08,0x02,0x04,0x06,0x08}};

void init_serialcom( void ) //串口通信初始设置

{

SCON = 0x98 ; //UART为模式2,8位数据,允许接收

TMOD = 0x10 ; //定时器1为模式1

PCON = 0x80; //SMOD=1;波特率为3204K

TH1 = 0xE8 ; //装载高位

TL1 = 0x00 ; //装载地位

IE = 0x98 ; //开总中断,串口中断,定时器中断

TR1 = 1 ; // 启动定时器1

}

//向串口发送一个字符

void send_char_com( unsigned char ch)

{

ACC=ch; //将数赋值给寄存器A,计算偶校位P的值

TB8=P; //将P的值赋值给TB8,进行偶校验

SBUF=ch; //校验完后将数赋值到串口寄存器SBUF中

while(TI==0); //等待赋值完毕,发送数据到串口

TI=0; //赋值完毕后将发数标志位清零

}

//定时器中断函数

void time1() interrupt 3

{

int b;

TH1 = 0xE8 ; //装载高位

TL1 = 0x00 ; //装载地位

send_char_com(ch[0][0]);

send_char_com(ch[0][1]);

send_char_com(ch[0][2]);

send_char_com(ch[0][3]);

send_char_com(ch[0][4]);

send_char_com(ch[0][5]);

send_char_com(ch[0][6]);

send_char_com(ch[0][7]);

send_char_com(ch[0][8]);

send_char_com(ch[0][9]);

send_char_com(ch[0][10]);

send_char_com(ch[0][11]);

send_char_com(ch[0][12]);

send_char_com(ch[0][13]);

send_char_com(ch[0][14]);

send_char_com(ch[0][15]);

send_char_com(ch[0][16]);

send_char_com(ch[0][17]);

send_char_com(ch[0][18]);

send_char_com(ch[0][19]);

send_char_com(ch[0][20]);

send_char_com(ch[0][21]);

send_char_com(ch[0][22]);

send_char_com(ch[0][23]);

send_char_com(ch[0][24]);

send_char_com(ch[0][25]);

send_char_com(ch[0][26]);

send_char_com(ch[0][27]);

send_char_com(ch[0][28]);

send_char_com(ch[0][29]);

send_char_com(ch[0][30]);

send_char_com(ch[0][31]);

send_char_com(ch[0][32]);

send_char_com(ch[0][33]);

send_char_com(ch[0][34]);

send_char_com(ch[0][35]);

send_char_com(ch[0][36]);

send_char_com(ch[0][37]);

send_char_com(ch[0][38]);

send_char_com(ch[0][39]);

send_char_com(ch[0][40]);

send_char_com(ch[0][41]);

send_char_com(ch[0][42]);

send_char_com(ch[0][43]);

send_char_com(ch[0][44]);

send_char_com(ch[0][45]);

send_char_com(ch[0][46]);

send_char_com(ch[0][47]);

send_char_com(ch[0][48]);

send_char_com(ch[0][49]);

send_char_com(ch[0][50]);

send_char_com(ch[0][51]);

send_char_com(ch[0][52]);

send_char_com(ch[0][53]);

send_char_com(ch[0][54]);

send_char_com(ch[0][55]);

send_char_com(ch[0][56]);

send_char_com(ch[0][57]);

send_char_com(ch[0][58]);

send_char_com(ch[0][59]);

send_char_com(ch[0][60]);

send_char_com(ch[0][61]);

send_char_com(ch[0][62]);

send_char_com(ch[0][63]);

send_char_com(ch[0][64]);

send_char_com(ch[0][65]);

send_char_com(ch[0][66]);

send_char_com(ch[0][67]);

send_char_com(ch[0][68]);

send_char_com(ch[0][69]);

send_char_com(ch[0][70]);

send_char_com(ch[0][71]);

send_char_com(ch[0][72]);

send_char_com(ch[0][73]);

send_char_com(ch[0][74]);

send_char_com(ch[0][75]);

send_char_com(ch[0][76]);

send_char_com(ch[0][77]);

send_char_com(ch[0][78]);

send_char_com(ch[0][79]);

for(b=0;b<310;b++);

send_char_com(ch[1][0]);

send_char_com(ch[1][1]);

send_char_com(ch[1][2]);

send_char_com(ch[1][3]);

send_char_com(ch[1][4]);

send_char_com(ch[1][5]);

send_char_com(ch[1][6]);

send_char_com(ch[1][7]);

send_char_com(ch[1][8]);

send_char_com(ch[1][9]);

send_char_com(ch[1][10]);

send_char_com(ch[1][11]);

send_char_com(ch[1][12]);

send_char_com(ch[1][13]);

send_char_com(ch[1][14]);

send_char_com(ch[1][15]);

send_char_com(ch[1][16]);

send_char_com(ch[1][17]);

send_char_com(ch[1][18]);

send_char_com(ch[1][19]);

send_char_com(ch[1][20]);

send_char_com(ch[1][21]);

send_char_com(ch[1][22]);

send_char_com(ch[1][23]);

send_char_com(ch[1][24]);

send_char_com(ch[1][25]);

send_char_com(ch[1][26]);

send_char_com(ch[1][27]);

send_char_com(ch[1][28]);

send_char_com(ch[1][29]);

send_char_com(ch[1][30]);

send_char_com(ch[1][31]);

send_char_com(ch[1][32]);

send_char_com(ch[1][33]);

send_char_com(ch[1][34]);

send_char_com(ch[1][35]);

send_char_com(ch[1][36]);

send_char_com(ch[1][37]);

send_char_com(ch[1][38]);

send_char_com(ch[1][39]);

send_char_com(ch[1][40]);

send_char_com(ch[1][41]);

send_char_com(ch[1][42]);

send_char_com(ch[1][43]);

send_char_com(ch[1][44]);

send_char_com(ch[1][45]);

send_char_com(ch[1][46]);

send_char_com(ch[1][47]);

send_char_com(ch[1][48]);

send_char_com(ch[1][49]);

send_char_com(ch[1][50]);

send_char_com(ch[1][51]);

send_char_com(ch[1][52]);

send_char_com(ch[1][53]);

send_char_com(ch[1][54]);

send_char_com(ch[1][55]);

send_char_com(ch[1][56]);

send_char_com(ch[1][57]);

send_char_com(ch[1][58]);

send_char_com(ch[1][59]);

send_char_com(ch[1][60]);

send_char_com(ch[1][61]);

send_char_com(ch[1][62]);

send_char_com(ch[1][63]);

send_char_com(ch[1][64]);

send_char_com(ch[1][65]);

send_char_com(ch[1][66]);

send_char_com(ch[1][67]);

send_char_com(ch[1][68]);

send_char_com(ch[1][69]);

send_char_com(ch[1][70]);

send_char_com(ch[1][71]);

send_char_com(ch[1][72]);

send_char_com(ch[1][73]);

send_char_com(ch[1][74]);

send_char_com(ch[1][75]);

send_char_com(ch[1][76]);

send_char_com(ch[1][77]);

send_char_com(ch[1][78]);

send_char_com(ch[1][79]);

}

main()

{

init_serialcom(); //初始化串口

while (1) ;

}

我只会汇编,不会C。

很简单的。

过零检测,自然是有下降沿、上升沿了。必须使用P32(或P33) 外部中断INT0脚。设置INT0下降沿中断,中断响应后启动定时器T0(或T1)计时,定时器溢出中断时,对应脚输出高电平(根据你的电路决定是高电平还是低电平),触发可控硅导通。

定时器的初始值可以用软件随时改变。初始值越小,灯越亮,越大,灯越暗。但初始值不能大于10ms。否则进入另一个半波了,输出不正常了。

一般可以烧写

89C51

读写器

都能烧写2051的,烧写器上会标示出2051的摆放位置的(一般是底部对齐),然后在下载设置中选择器件类型,就可以下载了。

以上就是关于在STC单片机里写了个串口发送程序,运行正确,可把这程序烧到89C2051里面就不好使!下面试我的程序全部的内容,包括:在STC单片机里写了个串口发送程序,运行正确,可把这程序烧到89C2051里面就不好使!下面试我的程序、求单片机控制可控硅过零触发c程序 单片机是89c2051的P1^0,P1^1口。可控硅用BT136,光耦用MOC3021。、请问89C2051单片机能不能直接把相应引脚接在89C51的烧写器上下载程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9442002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存