編程原理
為企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站優(yōu)化、成都全網(wǎng)營銷推廣、競價托管、品牌運營等營銷獲客服務(wù)。成都創(chuàng)新互聯(lián)公司擁有網(wǎng)絡(luò)營銷運營團隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認可!
程序1為查詢通信方式接口程序,為一典型的數(shù)據(jù)采集例程。其中bioscom()函數(shù)初始化COM1(此函數(shù)實際調(diào)用BIOS
INT
14H中斷0號功能)。這樣在程序中就避免了具體設(shè)置波特率因子等繁瑣工作,只需直接訪問發(fā)送/接收寄存器(3F8H)和線路狀態(tài)寄存
分接收端和發(fā)送端。
接收端:
1·打開com1端口
fd=fopen("/dev/ttys0",方式);
2·取得當(dāng)前串口值,保存到結(jié)構(gòu)體變量oldtio
tcgetattr(fd,oldtio);
3·串口結(jié)構(gòu)體變量newtio清0.
bzero(newtio,sizeof(newtio))
4·設(shè)置串口參數(shù)
主要設(shè)置比特率、是否忽略奇偶校驗錯誤,啟用正規(guī)模式等等。
接收端
1·打開com端口
2·取得當(dāng)前串口值
3·串口結(jié)構(gòu)體變量清0
4·設(shè)置串口參數(shù)。
我寫的串口通信代碼比較長,給幾個關(guān)鍵函數(shù)你吧,可實現(xiàn)PC與單片機的雙工通信
/*串口通訊 單片機晶振:11.0592MHz
T1工作于方式2 波特率=2^smod*fosc/32/12/(256-X)*/
#includecommon.h
void do_uart(void); //串口接收執(zhí)字符時的操作
/*串口發(fā)送字符串 */
void sendstr(uchar *p)
{
while(*p!='\0')
{ SBUF=*p; //待發(fā)送的數(shù)據(jù)寫入緩沖區(qū)
while(!TI); //等待發(fā)送完成
TI=0; //清零發(fā)送標(biāo)志位
p++; //指針加1
cnt_s++; //發(fā)送計數(shù)
}
}
/*串口接收中斷函數(shù)*/
void int_rec(void) interrupt 4 using 2
{
if(RI) //查詢接收標(biāo)志位(有數(shù)據(jù)發(fā)送過來時置為1)
{
RI = 0; //接收標(biāo)志位清零
// sendchar(SBUF);//讓從電腦上傳到單片機的數(shù)據(jù),傳回的電腦顯示
do_uart();//對接受到得字符操作
}
}
/*串口初始化*/
void com_init(uint baud)
{
SCON = 0x50; //串口工作方式為1,串行允許接受
TMOD = 0x21; //定時器1工作在方式2 定時器0工作在方式1
//PCON = 0x80; //SMOD = 1; 波特率加倍
TH1=256-fosc/32/12/baud;
TL1=TH1;
ES = 1; //開串口中斷
TR1 = 1; //允許定時器1工作
EA = 1; //開總中斷
}
void sendchar(uchar uart_dat) //串口發(fā)送字符函數(shù)
{
SBUF = uart_dat; //待發(fā)送的數(shù)據(jù)寫入緩沖區(qū)
while(!TI); //等待發(fā)送完成
TI = 0; //清零發(fā)送標(biāo)志位
cnt_s++; //發(fā)送計數(shù)
}