- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章通用同步异步通信的应用1
第8章 通用同步/异步通信的应用
8.5 单片机双机异步通信
1 单片机PIC1编程(发送部分)
#include pic.h
/*该程序实现单片机双机异步通信功能,*/
unsigned char tran[8];/*定义一个数组存储发送数据*/
unsigned char k,data;const char table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};
/**/
/*spi显示初始化子程序*/
void SPIINIT()
{
PIR1=0;
SSPCON=0x30;
SSPSTAT=0xC0;
/*SPI的控制方式,允许SSP方式,并且时钟下降沿发送,与74HC595,当其
*SCLK从低到高跳变时,串行输入寄存器的特点相对应*/
TRISC=0xD7;/*SDO引脚为输出,SCK*/
TRISA5=0;/*RA5引脚设置为输出,*/
}
/*给数组赋初值子程序 */
void fuzhi()
{
for(k=0;k8;k++) {
tran[k]=k+3;
}
}
/*SCI*/
void sciint()
{
SPBRG=0X19;/*将传输的波特率设为约9 600位/秒*/
TXSTA=0X04;/*选择异步高速方式传输8位数据*/
RCSTA=0X80;/*允许同步串行口工作*/
TRISC6=1;
TRISC7=1;/*将RC6、RC7设置为输入方式,*/
}
/*SPI传输数据子程序*/
void SPILED(data)
{
SSPBUF=data;/*启动发送*/
do {
;
}while(SSPIF==0);
SSPIF=0;
}
/*,8位数*/
void display()
{
RA5=0;/*准备锁存*/
for(k=0;k8;k++) {
data=tran[k];
data=table[data];/*查得显示的段码*/
SPILED(data);/*发送显示段码*/
}
RA5=1;/*最后给一个锁存信号,*/
}
/*主程序*/
main()
{
SPIINIT();
fuzhi();/*给数组赋初值*/
sciint();/*SCI部件初始化*/
di();/*中断禁止*/
TXEN=1;/*发送允许*/
CREN=1;/*接收数据允许*/
for(k=0;k8;k++){
TXREG=tran[k];/*发出一个字符*/
while(1){
if(TXIF==1) break;
}/*等待写入完成*/
while(1){
if(RCIF==1) break;/*,*/
}
RCREG=RCREG;/*读响应字节,清RCIF*/
}
display();/*显示发送的数据*/
while(1){
;
}
}#include pic.h
/*该程序实现单片机双机异步通信功能,,8
*个LED上*/
unsigned char rece[8];/**/
unsigned char k,data;const char table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};
/**/
/*spi显示初始化子程序*/
void SPIINIT()
{
;详细语句见发送程序
}
/*SCI部件初始化子程序*/
void sciint()
{
SPBRG=0X19;/*波特率设置与PIC1相同,9 600位/秒*/
TXSTA=0X04;/*异步高速传输*/
RCSTA=0X80;/*串行口工作使能*/
TRISC6=1;
TRISC7=1;/*将RC6、RC7设置为输入方式,*/
}
/*SPI传送数据子程序*/
void SPILED(data)
{
;详细语句与见发送程序
}
/*显示子程序,4位数*/
void display()
{
RA5=0;/*准备锁存*/
for(k=0;k8;k++){
data=rece[k];
data=table[data];/*查得显示的段码*/
SPILED(data);/*发送显示段码*/
}
RA5=1;/*最后给一个锁存信号,*/
}
/*主程序*/
main()
{
SPII
文档评论(0)