利用C164單片機(jī)設(shè)計(jì)自動(dòng)攤鋪機(jī)通信模塊
下面為實(shí)現(xiàn)串口的通信程序:
#include
unsigned int a;
interrupt(0x2B) void S0RINT(void) //接收中斷服務(wù)子程序
{
a=S0RBUF; //將接收數(shù)據(jù)保存
}
void putchar(unsigned char tdata) //串行發(fā)送程序
{
while(!S0TBIR){;} //等待發(fā)送緩沖區(qū)清空
S0TBIR=0; //復(fù)位發(fā)送緩沖區(qū)中斷請求標(biāo)志
S0TBUF=tdata; //裝載發(fā)送緩沖寄存器
}
void ASC_vInit(void) //串行通信初始化
{
S0CON=0x8011; //定義控制寄存器:SOR=1;SOREM=1;串行方式1
S0BG=0x0040; //定義波特率9 600Bd
S0RIC=0x0062; //定義接收中斷控制寄存器
S0TBIC=0x0080; //定義發(fā)送緩沖控制寄存器
P3 |=0x0400; //定義P3.10引腳為輸出鎖存(TXD0)
DP3 |=0x0400; //定義P3.10方向控制(TXD0為輸出)
Dp3 =0xF7FF; //定義P3.11方向控制(RXD0為輸入)
IEN=1; //開中斷
}
void main(void)
{
……;
ASC_vInit(); //串口初始化
putchar(‘……’); //串行發(fā)送
……;
}
6.CAN總線通信軟件設(shè)計(jì)
6.1 C164CI的CAN模塊概述
C164CI的CAN模塊特點(diǎn)如下:
(1)遵循CAN V2.0B規(guī)定(符號標(biāo)準(zhǔn)和擴(kuò)展功能)。
(2)最大CAN通信速率為1MB/S。
(3)完全的CAN裝置:
l 15個(gè)信息體,帶有自己的識別器和狀態(tài)控制位;
l 每個(gè)信息體可以定義為發(fā)送或接收。
(4)通過在片內(nèi)部XBUS(16位獨(dú)立方式)與主CPU相連(C166-內(nèi)核)。
(5)接收濾波器用可編程屏蔽寄存器:
l 全域屏蔽輸入信息體(全CAN功能);
l 信息體15有附加屏蔽(基本CAN功能);
l 靈活的中斷事件控制;
l 帶有兩個(gè)接收緩沖器;
l 用自己的全域屏蔽寄存器進(jìn)行接接收濾波。
評論