欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STC單片機(jī)帶x5045看門狗與串口效驗框架源碼
[打印本頁]
作者:
yangyuan123
時間:
2018-9-23 10:39
標(biāo)題:
STC單片機(jī)帶x5045看門狗與串口效驗框架源碼
STC12C5A60S2串口通信帶CRC效驗,合適新手,希望有高手指點(diǎn)
單片機(jī)源程序如下:
/*
串口協(xié)議
功能:通過判斷串口發(fā)送數(shù)據(jù),按數(shù)組0到最后一位進(jìn)行判斷
,用特定一個數(shù)組判斷選擇,用break跳出循環(huán),執(zhí)行數(shù)據(jù) */
#include "gobal.h"
#include "Uart_Handle.h"
#include "Uart.h"
#include "x5045.h"
void Uart_Handle(void) //通訊協(xié)議判斷
{
uchar cmd_temp;
//if(Recdata[REC_CMD1] ==0x00) //判斷設(shè)備地址
if((Recdata[REC_CMD1]==0x00)&&(Recdata[REC_CMD2]==0x0B)&&(Recdata[REC_CMD3]==0x01)&&(Recdata[REC_CMD4]==0x00)&&(Recdata[REC_CMD5]==0x01)
&&(Recdata[REC_CMD6]==0x0A)&&(Recdata[REC_CMD7]==0x00)&&(Recdata[REC_CMD8]==0x01)&&(Recdata[REC_CMD9]==0x01)&&(Recdata[REC_CMD10]==0x7F))
{
cmd_temp = Recdata[REC_CMD9]; //解析命令字
switch(cmd_temp)
{
case sj2://0x01開燈
sj1();
break;
case xj2://0x00關(guān)燈
xj1();
break;
case gkm://關(guān)看門狗命令
gkm1();
break;
case kkm://開看門狗命令
kkm1();
break;
default://other
break;
}
}
}
void sj1(void)//開燈
{
uchar To_PC_Data[12];
To_PC_Data[0] = 0xCC; //接收包頭CC
To_PC_Data[1] = 0x00; //應(yīng)答包字節(jié)數(shù)10
To_PC_Data[2] = 0x0C;//地址
To_PC_Data[3] = 0x01; //命令字
To_PC_Data[4] = 0x00;
To_PC_Data[5] = 0x01;
To_PC_Data[6] = 0x0A;
To_PC_Data[7] = 0x00;
To_PC_Data[8] = 0x00;
To_PC_Data[9] = 0x00;
To_PC_Data[10] = 0x00;
To_PC_Data[11] = 0x7F;
UART0_Send_String(To_PC_Data,12);
JDQ=1;
dogflag=1;
}
void xj1(void)//關(guān)燈
{
uchar To_PC_Data[12];
To_PC_Data[0] = 0xCC; //接收包頭CC
To_PC_Data[1] = 0x00; //應(yīng)答包字節(jié)數(shù)10
To_PC_Data[2] = 0x0C;//地址
To_PC_Data[3] = 0x01; //命令字
To_PC_Data[4] = 0x00;
To_PC_Data[5] = 0x01;
To_PC_Data[6] = 0x0A;
To_PC_Data[7] = 0x00;
To_PC_Data[8] = 0x00;
To_PC_Data[9] = 0x00;
To_PC_Data[10] = 0x00;
To_PC_Data[11] = 0x7F;
UART0_Send_String(To_PC_Data,12);
JDQ=0;
dogflag=0;
}
void gkm1(void)//開燈
{
WriteSR(0x32);
}
void kkm1(void)//開燈
{
WriteSR(0x12);
}
復(fù)制代碼
#include "x5045.h"
#include "gobal.h"
/*****************************************************
函數(shù)功能:從X5045的當(dāng)前地址讀出數(shù)據(jù)
出口參數(shù):x
***************************************************/
// unsigned char ReadCurrent(void)
// {
// unsigned char i;
// unsigned char x=0x00; //儲存從X5045中讀出的數(shù)據(jù)
// SCK=1; //將SCK置于已知的高電平狀態(tài)
// for(i = 0; i < 8; i++)
// {
// SCK=1; //拉高SCK
// SCK=0; //在SCK的下降沿輸出數(shù)據(jù)
// x<<=1; //將x中的各二進(jìn)位向左移一位,因為首先讀出的是字節(jié)的最高位數(shù)據(jù)
// x|=(unsigned char)SO; //將SO上的數(shù)據(jù)通過按位"或"運(yùn)算存入 x
// }
// return(x); //將讀取的數(shù)據(jù)返回
// }
/*****************************************************
函數(shù)功能:寫數(shù)據(jù)到X5045的當(dāng)前地址
入口參數(shù):dat
***************************************************/
void WriteCurrent(unsigned char dat)
{
unsigned char i;
SCK=0; //將SCK置于已知的低電平狀態(tài)
for(i = 0; i < 8; i++) // 循環(huán)移入8個位
{
SI=(bit)(dat&0x80); //通過按位"與"運(yùn)算將最高位數(shù)據(jù)送到S
//因為傳送時高位在前,低位在后
SCK=0;
SCK=1; //在SCK上升沿寫入數(shù)據(jù)
dat<<=1; //將y中的各二進(jìn)位向左移一位,因為首先寫入的是字節(jié)的最高位
}
}
/*****************************************************
函數(shù)功能:寫狀態(tài)寄存器 ,可以設(shè)置看門狗的溢出時間及數(shù)據(jù)保護(hù)
入口參數(shù):rs; //儲存寄存器狀態(tài)值
***************************************************/
void WriteSR(unsigned char rs)
{
CS=0; //拉低CS,選中X5045
WriteCurrent(WREN); //寫使能鎖存器允許
CS=1; //拉高CS
CS=0; //重新拉低CS,否則下面的寫寄存器狀態(tài)指令將被丟棄
WriteCurrent(WRSR); //寫狀態(tài)寄存器
WriteCurrent(rs); //寫入新設(shè)定的寄存器狀態(tài)值
CS=1; //拉高CS
}
/********** *******************************************
函數(shù)功能:寫數(shù)據(jù)到X5045的指定地址
入口參數(shù):addr
***************************************************/
// void WriteSet(unsigned char dat,unsigned char addr)
// {
// SCK=0; //將SCK置于已知狀態(tài)
// CS=0; //拉低CS,選中X5045
// WriteCurrent(WREN); //寫使能鎖存器允許
// CS=1; //拉高CS
// CS=0; //重新拉低CS,否則下面的寫入指令將被丟棄
// WriteCurrent(WRITE); //寫入指令
// WriteCurrent(addr); //寫入指定地址
// WriteCurrent(dat); //寫入數(shù)據(jù)
// CS=1; //拉高CS
// SCK=0; //將SCK置于已知狀態(tài)
// }
/*****************************************************
函數(shù)功能:從X5045的指定地址讀出數(shù)據(jù)
入口參數(shù):addr
出口參數(shù):dat
***************************************************/
// unsigned char ReadSet(unsigned char addr)
// {
// unsigned char dat;
// SCK=0; //將SCK置于已知狀態(tài)
// CS=0; //拉低CS,選中X5045
// WriteCurrent(READ); //開始讀
// WriteCurrent(addr); //寫入指定地址
// dat=ReadCurrent(); //讀出數(shù)據(jù)
// CS=1; //拉高CS
// SCK=0; //將SCK置于已知狀態(tài)
// return dat; //返回讀出的數(shù)據(jù)
// }
/*****************************************************
函數(shù)功能:看門狗復(fù)位程序
***************************************************/
void WatchDog(void)
{
CS=1; //拉高CS
CS=0; //CS引腳的一個下降沿復(fù)位看門狗定時器
CS=1; //拉高CS
}
///*****************************************************
//函數(shù)功能:主程序
//***************************************************/
//void main(void)
//{
// WriteSR(0x12); //寫狀態(tài)寄存器(設(shè)定看門狗溢出時間為600ms,寫不保護(hù))
// delaynms(10); //X5045的寫入周期約為10ms
// while(1)
// {
// WriteSet(0xaa,0x10); //將數(shù)據(jù)"0xaa"寫入指定地址"0x10"
// delaynms(10); //X5045的寫入周期約為10ms
// P1=ReadSet(0x10); //將數(shù)據(jù)讀出送P1口顯示
// WatchDog(); //復(fù)位看門狗
// }
//}ssss
復(fù)制代碼
所有資料51hei提供下載:
STC帶CRC效驗框架.rar
(59.8 KB, 下載次數(shù): 10)
2018-9-23 10:36 上傳
點(diǎn)擊文件名下載附件
新手可以看看
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1