2345截圖20251113204954.png (14.18 KB, 下載次數: 0)
下載附件
2025-11-13 20:57 上傳
單片機源程序如下:
/*******************************************************************************
* 文件名稱:LabVIEW與單片機串口收發測試
*******************************************************************************/
#include <STC8H.H>
#include <intrins.H>
#define uchar unsigned char
#define uint unsigned int
uchar i,num,num1,num2;
uchar sendBuf[4];
bit flag=0;
bit bz=0;
void delayms(int ms);
void allinit();
void UartInit(void);
void main()
{
allinit();
UartInit();
EA=1;
P07=0;
while(1)
{
if(num=='A')P00=0;//LED亮
else if(num=='B')P00=1;//滅
if(num=='C')P01=0;
else if(num=='D')P01=1;
num1=20; //模擬兩路采集值
num2=40;
sendBuf[0]=num1/10+'0';
sendBuf[1]=num1%10+'0';
sendBuf[2]=num2/10+'0';
sendBuf[3]=num2%10+'0';
if(num=='R')//接受到采集指令
{
flag=1;
}
if(bz==0)
{
bz=1;
flag=1;
}
if(flag==1)
{
for(i=0;i<4;i++)
{
SBUF=sendBuf[ i];
while(TI==0);
TI=0;
}
}
}
}
//----------------------------
//UART1 中斷服務程序
//----------------------------
void Uart1() interrupt 4 using 1
{
if (RI) //檢測串口1接收中斷
{
RI = 0; //清除串口1接收中斷請求位
num=SBUF;
if(num=='S')
{
flag=0;
}
}
if (TI)
{
TI=0;
}
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位數據,可變波特率
AUXR &= 0xBF; //定時器時鐘12T模式
AUXR &= 0xFE; //串口1選擇定時器1為波特率發生器
TMOD &= 0x0F; //設置定時器模式
TL1 = 0xE8; //設置定時初始值
TH1 = 0xFF; //設置定時初始值
ET1 = 0; //禁止定時器中斷
TR1 = 1; //定時器1開始計時
ES = 1;
}
void delayms(int ms)
{
int i,j;
for(i=ms;i>0;i--)
for(j=845;j>0;j--);
}
void allinit()
{
P0M0=0X00;P0M1=0X00;
P1M0=0X00;P1M1=0X00;
P2M0=0X00;P2M1=0X00;
P3M0=0X00;P3M1=0X00;
P4M0=0X00;P4M1=0X00;
P5M0=0X00;P5M1=0X00;
}
vi文件:
溫控.zip
(19.24 KB, 下載次數: 0)
2025-11-13 21:00 上傳
點擊文件名下載附件
溫控.vi文件 下載積分: 黑幣 -5
|