久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
主從機(jī)多機(jī)通信模型類似云臺(tái)解碼器一樣用跳線設(shè)置從機(jī)地址
[打印本頁(yè)]
作者:
liuyy
時(shí)間:
2015-1-11 20:08
標(biāo)題:
主從機(jī)多機(jī)通信模型類似云臺(tái)解碼器一樣用跳線設(shè)置從機(jī)地址
#include //STC12C5AxxS2系列單片機(jī)頭文件
#define uchar unsigned char//宏定義
#define uint unsigned int//宏定義
uchar DZ;//地址號(hào),為接線方便本程序占用P1口用做手工地址設(shè)置后面的控制會(huì)對(duì)P1口無(wú)效
//一幀標(biāo)準(zhǔn)數(shù)據(jù)幀
int D=0; //緩沖區(qū)指針標(biāo)志
uchar DATA[3]; //數(shù)據(jù)幀格式為【地址】【請(qǐng)求OR設(shè)置標(biāo)志(1為請(qǐng)求2為設(shè)置,請(qǐng)求時(shí)數(shù)據(jù)位為空數(shù)據(jù))】【IO口號(hào)0對(duì)應(yīng)P0,1對(duì)應(yīng)P1.....】【數(shù)據(jù)】
/*********************************************************************************************
函數(shù)名:毫秒級(jí)CPU延時(shí)函數(shù)
調(diào) 用:DELAY_MS (?);
參 數(shù):1~65535(參數(shù)不可為0)
返回值:無(wú)
結(jié) 果:占用CPU方式延時(shí)與參數(shù)數(shù)值相同的毫秒時(shí)間
備 注:應(yīng)用于1T單片機(jī)時(shí)i<600,應(yīng)用于12T單片機(jī)時(shí)i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
/*********************************************************************************************/
/*********************************************************************************************
函數(shù)名:UART串口初始化函數(shù)
調(diào) 用:UART_init();
參 數(shù):無(wú)
返回值:無(wú)
結(jié) 果:?jiǎn)?dòng)UART串口接收中斷,允許串口接收,啟動(dòng)T/C1產(chǎn)生波特率(占用)
備 注:振蕩晶體為12MHz,PC串口端設(shè)置 [ 4800,8,無(wú),1,無(wú) ]
/**********************************************************************************************/
void UART_init (void){
EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
ES = 1; //允許UART串口的中斷
TMOD = 0x20; //定時(shí)器T/C1工作方式2
SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時(shí)禁止串口接收)
TH1 = 0xF3; //定時(shí)器初值高8位設(shè)置
TL1 = 0xF3; //定時(shí)器初值低8位設(shè)置
PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
TR1 = 1; //定時(shí)器啟動(dòng)
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:UART串口接收中斷處理函數(shù)
調(diào) 用:[SBUF收到數(shù)據(jù)后中斷處理]
參 數(shù):無(wú)
返回值:無(wú)
結(jié) 果:UART串口接收到數(shù)據(jù)時(shí)產(chǎn)生中斷,用戶對(duì)數(shù)據(jù)進(jìn)行處理(并發(fā)送回去)
備 注:過(guò)長(zhǎng)的處理程序會(huì)影響后面數(shù)據(jù)的接收
/**********************************************************************************************/
void UART_R (void) interrupt 4 using 1{ //切換寄存器組到1
unsigned char UART_data; //定義串口接收數(shù)據(jù)變量
if(RI&&D<=3){
RI = 0; //令接收中斷標(biāo)志位為0(軟件清零)
UART_data = SBUF; //將接收到的數(shù)據(jù)送入變量 UART_data
DATA[D]=UART_data;
D++;
}
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:UART串口發(fā)送函數(shù)
調(diào) 用:UART_T (?);
參 數(shù):需要UART串口發(fā)送的數(shù)據(jù)(8位/1字節(jié))
返回值:無(wú)
結(jié) 果:將參數(shù)中的數(shù)據(jù)發(fā)送給UART串口,確認(rèn)發(fā)送完成后退出
備 注:
/**********************************************************************************************/
void UART_T (unsigned char UART_data){ //定義串口發(fā)送數(shù)據(jù)變量
SBUF = UART_data; //將接收的數(shù)據(jù)發(fā)送回去
while(TI == 0); //檢查發(fā)送中斷標(biāo)志位
TI = 0; //令發(fā)送中斷標(biāo)志位為0(軟件清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:UART串口發(fā)送字符串函數(shù)
調(diào) 用:UART_TC (?);
參 數(shù):需要UART串口發(fā)送的數(shù)據(jù)(8位/1字節(jié))
返回值:無(wú)
結(jié) 果:向串口發(fā)送一個(gè)字符串,長(zhǎng)度不限。
備 注:例:UART_TC("d9887321$"); 此函數(shù)需要#include 頭文件支持。
/**********************************************************************************************/
void UART_TC (unsigned char *str){
while(*str != '\0'){
UART_T(*str);
*str++;
}
*str = 0;
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:主函數(shù)
調(diào) 用:無(wú)
參 數(shù):無(wú)
返回值:無(wú)
結(jié) 果:程序開(kāi)始處,無(wú)限循環(huán)
備 注:
/**********************************************************************************************/
void main (void)
{
uint x;
//地址初始化
DZ=P1;
//串口初始化
UART_init ();
while(1)
{
//地址初始化
DZ=P1;
if(D>3)
{
//已經(jīng)收到一幀控制數(shù)據(jù)
if(DATA[0]==DZ)
{
if(DATA[1]==1)
{
//返回IO口狀態(tài)數(shù)據(jù)
switch( DATA[2])
{
case 0:
DATA[3]=P0;
for(x=0;x<=3;x++)
{
UART_T(DATA[x]);
}
break;
case 2:
DATA[3]=P2;
for(x=0;x<=3;x++)
{
UART_T(DATA[x]);
}
break;
}
}else if(DATA[1]==2)
{
//設(shè)置IO口狀態(tài)
switch( DATA[2])
{
case 0:
P0=DATA[3];
break;
case 2:
P2=DATA[3];
break;
}
}
}
D=0;
}
}
}
復(fù)制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
视频一区中文字幕
|
一区二区三区av夏目彩春
|
欧美精品久久
|
欧美日韩一二三区
|
www国产精品
|
日本一区二区影视
|
www.久久国产精品
|
日本精品一区二区三区在线观看视频
|
在线免费观看毛片
|
成人三级av
|
色www精品视频在线观看
|
亚洲精品视频在线
|
酒色成人网
|
av一区二区在线观看
|
亚洲综合色视频在线观看
|
亚洲国产午夜
|
www成年人视频
|
久久精品国产亚洲a
|
日韩精品四区
|
日韩毛片
|
国产这里只有精品
|
久久久精彩视频
|
中文字幕不卡视频在线观看
|
亚洲女人天堂成人av在线
|
91精品国产91久久久久久
|
久久亚洲精品国产精品紫薇
|
狠狠爱综合
|
国产网站在线免费观看
|
亚洲成人国产
|
成人九色
|
精品久久不卡
|
亚洲精品国产一区
|
久久综合九色综合欧美狠狠
|
国产精品一区二区视频
|
91在线看片
|
最新国产精品视频
|
日韩在线观看
|
亚洲毛片网站
|
久草在线青青草
|
欧美乱操
|
偷拍自拍在线观看
|