DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 91|回复: 0
打印 上一主题 下一主题

115.2K串行通信C语言示例

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-28 13:15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//115.2k串行口通信程序,校验方式为简单双向校验,
//而且是必要的,因为任何采用中断、crc等的方法
//均很难保证速度和避免错误.
//总体速度5KB/秒
//单片机程序
//使用22.1184晶振
unsigned char time,b_break,b_break_3;
//35.555ms
void int_t0(void) interrupt 1 {
TH0=0;
if ((++b_break_3)>2) b_break=1;
time++;
}
//
unsigned char rec(void) {
TH0=0;b_break_3=0;b_break=0;
while (RI==0) {
if (b_break) return(1); //等待pc发送100ms超时
}
RI=0;
SBUF=SBUF;
return(SBUF);
}
/*返回1表示失败*/
bit sen(unsigned char d) {
SBUF=d;
TH0=0;b_break_3=0;b_break=0;
while (RI==0) {
if (b_break) return(1); //等待pc送回相同字节数据,100ms超时
}
RI=0;
if (SBUF!=d) return(1);
return(0);
}
void main(void) {
unsigned int i;
unsigned char d;
EA=1;
SCON=0xd8CON=0x80;
TMOD=0x21;
TL1=TH1=0xff;TR1=1;
TH0=0;ET0=TR0=1;
while (1) {
d=rec();
if ((!b_break)&&(d==0x55)) {
d=rec();
if (!b_break) {
if (d==0xaa) {
//接收到pc送来的要求发送指令0xaa55
for (i=0;i

unsigned char time_out;
void init_com1(void) {
outportb(0x3fb,0x80);
outportb(0x3f8,1);
outportb(0x3f9,0x0);
outportb(0x3fb,0x3);
}
void sen_com1(unsigned char d) {
long i;
time_out=0;
while (!(inportb(0x3fd)&0x20));
outportb(0x3fd,0x0);
outportb(0x3f8,d);
i=clock();
while (1) {
if (clock()>(i+8)) {time_out=1;return;}
if ((inp(0x3fd)&0x1)==1) break;
}
if (inp(0x3f8)!=d) {time_out=2;return;}
}
unsigned char rec_com1(void) {
long i;
unsigned char d;
time_out=0;
i=clock();
while (1) {
if (clock()>(i+8)) {time_out=1;return(0);}
if ((inp(0x3fd)&1)==1) break;
}
d=inp(0x3f8);
while (!(inportb(0x3fd)&0x20));
outportb(0x3fd,0x0);
outportb(0x3f8,d);
return(d);
}
void main(void) {
int i;
long st;
init_com1();
st=clock();
sen_com1(0xaa);
if (time_out) {printf("CPU not ready!");exit(-1);}
sen_com1(0xaa);
if (time_out) {printf("CPU not ready!");exit(-1);}
for (i=0;i<1000;i++) {
sen_com1(i);
if (time_out) {printf("CPU not ready!");exit(-1);}
}
printf("Total use %3.2f S.",(clock()-st)/18.2);
exit(1);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-26 05:43 , 耗时 0.086740 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表