標(biāo)題:
十六進(jìn)制怎么用單片機(jī)串口發(fā)送出去?
[打印本頁]
作者:
鬼推磨
時間:
2023-6-12 19:28
標(biāo)題:
十六進(jìn)制怎么用單片機(jī)串口發(fā)送出去?
0X03,0XFD,0X10,0XE8,0X00,0X00,0X0C,0X80,0X6B
上面
十六進(jìn)制怎么串口發(fā)送出去,
下面是我的程序。編譯也沒有錯誤,按鈕按了也沒有見發(fā)送出去。
#include <STC15W204S.h>
#include <intrins.h>
#define uchar unsigned char //定義一下方便后面使用
#define uint unsigned int //定義一下方便后面使用
#define ulong unsigned long //定義一下方便后面使用
#define COMM_BAUD_RATE 9600 //串口波特率
#define FOSC 11059200L //晶振設(shè)置,默認(rèn)使用11.0592M Hz,
sbit KEY1 = P3^3; //觸發(fā)
void UartInit(void) {
//8位數(shù)據(jù),可變波特率
SCON = 0x50;
//串口1選擇定時器2為波特率發(fā)生器
AUXR |= 0x01;
//定時器2時鐘為Fosc,即1T
AUXR |= 0x04;
//內(nèi)部RC時鐘設(shè)置為11.0592的定時器2初值設(shè)置
//設(shè)定定時初值
T2L = 0xE0;
//設(shè)定定時初值
T2H = 0xFE;
//啟動定時器2
AUXR |= 0x10;
//允許UART串口中斷
ES = 1 ;
//允許總中斷
EA = 1 ;
}
void send(uchar dat)
{
SBUF=dat; //發(fā)送指令到SBUF
while(!TI); //等待發(fā)送結(jié)束
TI=0; //清除結(jié)束標(biāo)志,以便再發(fā)送數(shù)據(jù)
}
void main()
{
UartInit();//串口寄存器的初始化設(shè)置
while(1)
{
if(KEY1==0) //判斷是否按下鍵盤
{
send(0X03);
send(0XFD);
send(0X14);
send(0XFF);
send(0X00);
send(0X00);
send(0X00);
send(0X0F);
send(0X6B);
}
while(KEY1==0);//按鍵鎖定,每按一次count只加1.
}
}
}
作者:
wys91203
時間:
2023-6-12 22:24
初始化程序中你開了中斷,ES=1,EA=1,則TI=1時就會進(jìn)入中斷,而你沒有中斷程序,你是用的查詢方式發(fā)碼,所以要把ES=1關(guān)了,ES=0. 也就是不用中斷。
作者:
wulin
時間:
2023-6-13 07:14
#include <STC15W204S.h>
#include <intrins.h>
#define uchar unsigned char //定義一下方便后面使用
#define uint unsigned int //定義一下方便后面使用
#define ulong unsigned long //定義一下方便后面使用
#define COMM_BAUD_RATE 9600 //串口波特率
#define FOSC 11059200L //晶振設(shè)置,默認(rèn)使用11.0592M Hz,
sbit KEY1 = P3^3; //觸發(fā)
uchar code Table[]={0X03,0Xfd,0X14,0Xff,0X00,0X00,0X00,0X0f,0X6b};
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 18;
j = 235;
do
{
while (--j);
} while (--i);
}
void UartInit(void)
{
SCON = 0x50;//8位數(shù)據(jù),可變波特率
AUXR |= 0x01;//串口1選擇定時器2為波特率發(fā)生器
AUXR |= 0x04;//定時器2時鐘為Fosc,即1T
//內(nèi)部RC時鐘設(shè)置為11.0592的定時器2初值設(shè)置
T2L = 0xE0;//設(shè)定定時初值
T2H = 0xFE;//設(shè)定定時初值
AUXR |= 0x10;//啟動定時器2
ES = 1 ;//允許UART串口中斷
EA = 1 ;//允許總中斷
}
void send(uchar dat)
{
SBUF=dat; //發(fā)送指令到SBUF
while(!TI); //等待發(fā)送結(jié)束
TI=0; //清除結(jié)束標(biāo)志,以便再發(fā)送數(shù)據(jù)
}
void main()
{
uchar i;
UartInit();//串口寄存器的初始化設(shè)置
while(1)
{
if(KEY1==0) //判斷是否按下鍵盤
{
Delay10ms();
if(KEY1==0)
{
for(i=0;i<9;i++)
send(Table[i]);
/* send(0X03);
send(0XFD);
send(0X14);
send(0XFF);
send(0X00);
send(0X00);
send(0X00);
send(0X0F);
send(0X6B);
*/
}
while(!KEY1);//按鍵鎖定,每按一次count只加1.
}
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1