单片机C语言学习入门资料(5)

2019-03-27 16:55

}

if( Dat>‘Z’){ Dat=‘a’; Caps=0; } if( Dat>‘z’){ Dat=‘A’; Caps=1; }

else

如下写法有错误:因为小b比大Z的编码值大,所以Dat总是‘a’

++Dat;

if( Dat>‘Z’){ Dat=‘a’} else if( Dat>‘z’){ Dat=‘A’}

三、 有A和B两台单片机,晶体频率分别为13MHz和14MHz,在容易编程的条件下,以最快的速度进行双

工串行通信,A给B循环发送大写字母从‘A’到‘Z’,B给A循环发送小写字母从‘a’到‘z’,双方都用中断方式进行收发。

解:由于晶体频率不同,又不成2倍关系,所以只有通信方式1和方式3,由于方式3的帧比方式1多一位,显然方式3的有效数据(9/11)比方式1(8/10)高,但要用方式3的第9位TB8来发送数据,编程难度较大,这里方式1较容易编程。

在计算最高速率时,由于单方程,双未知数,又不知道波特率为多少,所以要综合各方面的条件,估算出A和B的分频常数,分别为-13和-14时,速率不但相同,且为最大值。如下给出A机的程序:

#include void main( void ) { }

void RS232_intr( void ) interrupt 4 { } 四、多机通位 ?

在方式2和方式3,SM2只对接收有影响,当SM2=1时,只接收第9位等于1的帧(伪地址帧),而SM2=0时,第9位不影响接收。

unsigned char rDat;

if( RI == 1 ){ RI=0; rDat=SBUF; } if( TI==1 ) { }

static unsigned char tDat=‘a’; SBUF = tDat; TI = 0;

If( ++Dat > ‘z’) Dat=‘a’;

//注意RI和TI任一位变为1都中断

TMOD = (TMOD & 0x0F) | 0x20; TH1 = -13; TR1 = 1;

SCON = 0x52; //REN = 1 ES = 1; EA = 1; while( 1 );

//注意用倍频方式

PCON |= 0x80; //SMOD = 1

? ?

多机通信中,地址的确认与本机程序有关,所以可以实现点对点、点对组、以及通播方式的通信。

如果收发共用一总线,任何时刻只有一个发送源能占用总线发送数据,否则发生冲突。由此可构造无竞争的令牌网;或者多主竞争总线网。


单片机C语言学习入门资料(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小商品批发市场可行性研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: