標(biāo)題:
中穎單片機(jī)UART1串口實(shí)現(xiàn)自動(dòng)硬件地址識(shí)別和通訊SH88F516源程序
[打印本頁(yè)]
作者:
weihu
時(shí)間:
2017-11-18 05:16
標(biāo)題:
中穎單片機(jī)UART1串口實(shí)現(xiàn)自動(dòng)硬件地址識(shí)別和通訊SH88F516源程序
SH88F516代碼工程與串口調(diào)試工具:
0.png
(9.46 KB, 下載次數(shù): 115)
下載附件
2017-11-18 05:11 上傳
中穎單片機(jī)UART1控制源碼如下:
/***************************
說(shuō)明: 串口1擁有獨(dú)立的波特率發(fā)生器,不需要占用定時(shí)器資源,在多機(jī)通訊時(shí)還具有自動(dòng)硬件地址識(shí)別和幀出錯(cuò)檢測(cè)
功能。本程序代碼可以很好的實(shí)現(xiàn)自動(dòng)硬件地址識(shí)別和通訊功能,利用串口調(diào)試助手發(fā)送地址和數(shù)據(jù)命令,單片機(jī)接
收有效命令后,將數(shù)據(jù)再發(fā)送到串口調(diào)試助手。操作注意點(diǎn)如下:發(fā)送十六進(jìn)制數(shù)據(jù)55(55在程序中定義為硬件地址),
選擇偶校驗(yàn)(偶校驗(yàn)保證了輸出第8位為1),發(fā)送后會(huì)返回十六進(jìn)制數(shù)據(jù)55,說(shuō)明地址匹配,下面可以任意發(fā)送數(shù)據(jù)
(除了FF和AA)進(jìn)行通訊,發(fā)送的數(shù)據(jù)都可以返回到串口調(diào)試助手,十六進(jìn)制FF(偶校驗(yàn)為1)為系統(tǒng)默認(rèn)的廣播命令,
十六進(jìn)制AA為程序中定義的通訊結(jié)束命令,因而可以發(fā)送AA結(jié)束此次通訊。串口調(diào)試助手(serial V2.2.exe)在UART1文
件夾中。
要求:打開撥碼開關(guān)J4,使串口1有效。
*************************/
#include <sh88f516.h>
unsigned char data RCV_num;
bit flag1;
void init();
void SendChar(unsigned char value);
main()
{
init();
while(1)
{
if(flag1)
{
flag1 = 0;
SendChar(RCV_num);
}
}
}
void init()
{
CLKCON = 0x00; //時(shí)鐘設(shè)置 系統(tǒng)時(shí)鐘=晶振頻率 Fsys=16MHz
SADDR1 = 0x55; //多機(jī)通訊時(shí)的從機(jī)地址設(shè)置=0x55
SADEN1 = 0xFF; //從機(jī)地址屏蔽設(shè)置
SCON1 = 0xF0; //工作在方式3 ,多機(jī)通訊模式
SBRT1 = 0xFF; //工作在方式3時(shí),BAUDRATE=(1/16)*Fsys/(32768-SBRT[1:0]) Fsys=16MHz
SBRT0 = 0x98; //BAUDRATE=9600時(shí), SBRT[1:0]=0x7F98, SBRT1.7=1 --> SBRT1=0xFF, SBRT0 = 0x98;
IEN1 = 0x04; //ES1=1,不可位尋址
EA = 1; //開啟總中斷
}
void UART1_RCV_INT() interrupt 9 using 3 //串口接收中斷的中斷號(hào)為9.
{
IEN1 &= 0xFB; //關(guān)閉串口1中斷
SCON1 &= 0xDF; //SM12_TXCOL = 0;
RCV_num = SBUF1;
if(RCV_num==0xAA) //收到0xAA就結(jié)束此次通訊
{
SCON1 |= 0x20; //SM12_TXCOL = 1;
}
flag1 = 1;
RI1 = 0; //清除串口1中斷標(biāo)志位
IEN1 |= 0x04; //打開串口1中斷
}
void SendChar(unsigned char value)
{
IEN1 &= 0xFB; //ES1=0;
SBUF1=value; //寫SBUF1,激活發(fā)送
while(TI1==0); //等待轉(zhuǎn)換結(jié)束
TI1=0; //清除發(fā)送標(biāo)志位
…………
…………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
壓縮包里面包含有中穎單片機(jī)sh88f516常用功能的源碼,中文注釋都很詳細(xì)
下載地址:
http://www.torrancerestoration.com/bbs/dpj-98300-1.html
作者:
yeahfeng
時(shí)間:
2019-9-18 08:16
樓主,我現(xiàn)在用這個(gè)程序測(cè)試時(shí):為什么發(fā)送0x55,要沒有帶奇偶校驗(yàn)才能中斷收到,加了奇偶校驗(yàn)收不到0x55,而發(fā)送數(shù)據(jù)如果不加檢驗(yàn)位,多個(gè)字節(jié)會(huì)出現(xiàn)亂碼?用的是SH88F516,外部晶振12MHZ,波特率:9600,請(qǐng)問(wèn)這個(gè)是什么問(wèn)題?是不是哪里沒有設(shè)置好,還有SH88F516用成專用接口怎么設(shè)置,規(guī)格書沒有寫?比如SPI接口,幫忙回復(fù)一下謝謝。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1