欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STC8A單片機串口通訊官方代碼
[打印本頁]
作者:
czhaii
時間:
2020-1-7 22:18
標題:
STC8A單片機串口通訊官方代碼
這是官方代碼,把兩段例程合并起來,明天測試雙串口通訊。
串口1切換
#include "reg51.h"
sfr P_SW1=0xa2;
void main()
{
P_SW1=0x00; //RXD/P3.0, TXD/P3.1
//P_SW1=0x40; //RXD_2/P3.6, TXD_2/P3.7
//P_SW1=0x80; //RXD_3/P1.6, TXD_3/P1.7
//P_SW1=0xc0; //RXD_4/P4.3, TXD_4/P4.4
while (1);
}
串口2切換
#include "reg51.h"
sfr P_SW2 = 0xba;
void main()
{
P_SW2=0x00; //RXD2/P1.0, TXD2/P1.1
//P_SW2=0x01; //RXD2_2/P4.0, TXD2_2/P4.2
while (1);
}
串口3切換
#include "reg51.h"
sfr P_SW2=0xba;
void main()
{
P_SW2=0x00; // RXD3/P0.0, TXD3/P0.1
//P_SW2=x02; // RXD3_2/P5.0, TXD3_2/P5.1
while (1);
}
串口4切換
#include "reg51.h"
sfr P_SW2 = 0xba;
void main()
{
P_SW2=0x00; //RXD4/P0.2, TXD4/P0.3
//P_SW2=0x04; //RXD4_2/P5.2, TXD4_2/P5.3
while (1);
}
UART 1 中斷
#include "reg51.h"
#include "intrins.h"
//測試工作頻率為11.0592MHz
sfr T2L=0xd7;
sfr T2H=0xd6;
sfr AUXR=0x8e;
sbit P10=P1^0;
sbit P11=P1^1;
void UART1_Isr() interrupt 4
{
if (TI)
{
TI = 0; //清中斷標志
P10 = !P10; //測試端口
}
if (RI)
{
RI = 0; //清中斷標志
P11 = !P11; //測試端口
}
}
void main()
{
SCON=0x50;
T2L=0xe8; //65536-11059200/115200/4=0FFE8H
T2H=0xff;
AUXR=0x15; //啟動定時器
ES = 1; //使能串口中斷
EA = 1;
SBUF = 0x5a; //發送測試數據
while (1);
}
UART 2 中斷
#include "reg51.h"
#include "intrins.h"
//測試工作頻率為11.0592MHz
sfr T2L=0xd7;
sfr T2H=0xd6;
sfr AUXR=0x8e;
sfr S2CON=0x9a;
sfr S2BUF=0x9b;
sfr IE2=0xaf;
#define ES2 0x01
sbit P12=P1^2;
sbit P13=P1^3;
void UART2_Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02; //清中斷標志
P12 = !P12; //測試端口
}
if (S2CON & 0x01)
{
S2CON &= ~0x01; //清中斷標志
P13 = !P13; //測試端口
}
}
void main()
{
S2CON=0x10;
T2L=0xe8; //65536-11059200/115200/4=0FFE8H
T2H=0xff;
AUXR=0x14; //啟動定時器
IE2=ES2; //使能串口中斷
EA=1;
S2BUF=0x5a; //發送測試數據
while(1);
}
UART 3 中斷
#include "reg51.h"
#include "intrins.h"
//測試工作頻率為11.0592MHz
sfr T2L=0xd7;
sfr T2H=0xd6;
sfr AUXR=0x8e;
sfr S3CON=0xac;
sfr S3BUF=0xad;
sfr IE2=0xaf;
#define ES3 0x08
sbit P10 = P1^0;
sbit P11 = P1^1;
void UART3_Isr() interrupt 17
{
if (S3CON & 0x02)
{
S3CON&=~0x02; //清中斷標志
P10=!P10; //測試端口
}
if(S3CON&0x01)
{
S3CON&=~0x01; //清中斷標志
P11=!P11; //測試端口
}
}
void main()
{
S3CON = 0x10;
T2L = 0xe8; //65536-11059200/115200/4=0FFE8H
T2H = 0xff;
AUXR = 0x14; //啟動定時器
IE2 = ES3; //使能串口中斷
EA = 1;
S3BUF = 0x5a; //發送測試數據
while (1);
}
UART 4 中斷
#include "reg51.h"
#include "intrins.h"
//測試工作頻率為11.0592MHz
sfr T2L=0xd7;
sfr T2H=0xd6;
sfr AUXR=0x8e;
sfr S4CON=0x84;
sfr S4BUF=0x85;
sfr IE2=0xaf;
#define ES4 0x10
sbit P10=P1^0;
sbit P11=P1^1;
void UART4_Isr() interrupt 18
{
if (S4CON & 0x02)
{
S4CON &= ~0x02; //清中斷標志
P10 = !P10; //測試端口
}
if (S4CON & 0x01)
{
S4CON &= ~0x01; //清中斷標志
P11 = !P11; //測試端口
}
}
void main()
{
S4CON = 0x10;
T2L = 0xe8; //65536-11059200/115200/4=0FFE8H
T2H = 0xff;
AUXR = 0x14; //啟動定時器
IE2 = ES4; //使能串口中斷
EA = 1;
S4BUF = 0x5a; //發送測試數據
while (1);
}
作者:
czhaii
時間:
2020-1-8 10:13
給力,搞單片機要靠平時資料整理和積累的
作者:
jhczy
時間:
2020-1-8 10:26
等待樓主匯報測試結果
作者:
czhaii
時間:
2020-1-8 13:49
串口轉換到P3.6 P3.7驅動TTS語音模塊測試成功,
這樣符合我的要求了,我用P3.0 3.1接收數據,
P3.6 P3.7驅動語音模塊。播放結束再切換返回到P3.0 3.1。
時間緊張,下一步再摸索兩個串口通訊
/*無線通訊語言模塊測試·PAST 2020 1 8 L72 CODE1413**/
#include <REG52.H>
#include <intrins.H>
#include "stdio.h"
#define uint unsigned int
#define uchar unsigned char
sbit OUT1=P3^2; /****輸出***/
sbit OUT2=P3^4; /****輸出***/
sbit MD0MD1=P3^2;
uchar DAT2=0;
bit Receive_Flag;
/*---------------延時子程序----------------*/
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<200;j++)
;
}
/*------------初始化串口---------------------*/
void InitUart()
{
SCON=0X50; //8位數據,可變波特率
AUXR|=0x01; //串口1選擇定時器2為波特率發生器
AUXR|=0X04; //定時器2時鐘為Fosc,即1T
P_SW1=0x40; //RXD_2/P3.6, TXD_2/P3.7
T2L=0XE0; //設置定時器處置 110592》9600
T2H=0XFE; //設置定時器處置 110592》9600
AUXR|=0X10; //啟動定時器2
TI=1;
EA=1;
}
/*--------UART 中斷服務程序----Buff=SBUF---------------*/
void Uart() interrupt 4 using 1
{
if(RI)
{
DAT2=SBUF; //數組下標位置的數據等于j
RI=0; //
Receive_Flag=1; //接收數據標志置一
}
}
/*------------------主循環程序----------------*/
void main( ) /*主程序開始*/
{ /**加一**/
AUXR=0X80; //STC系列的1T 設置
TMOD=0X01;
InitUart(); //初始化串口
ES=1;
Receive_Flag=0; //接收到數據標志置零
MD0MD1=0; //
//Warning=0; //報警標志等于0
// Counter=0; //報警計數器等于0
// printf("報警標志");
printf("<Z>5"); //
printf("<V>2"); //
printf("<S>3"); //
while(1)
{
printf("不喝酒就沒得朋友可是只要偶一喝酒就喝倒一代朋友人生真的很矛盾");
// printf("Please input up,dowm,high:\r\n");
OUT1=0;
OUT2=1;
delay1(2000);
delay1(2000);
OUT1=1;
OUT2=0;
delay1(2000);
delay1(2000);
////////////////////////////////
}
}
作者:
pengyongnet
時間:
2020-4-16 10:00
驗證過嗎
作者:
溫柔的郎
時間:
2022-2-4 19:24
實踐是檢驗真理的唯一標準!!
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1