STC8g1k08a这款芯片,可以说是麻雀虽小五脏俱全,以下是简单的双机通讯实验例子
//多机通信主机发程序
/
#include<stc8g.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define p_sw1 0x00//定义p3.0,p3.1为串口
sbit LED1=P3^2;
sbit LED2=P3^3;
sbit K1=P5^4;
//
void DelayMS(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//
void Putc_to_SerialPort(uchar c)
{
SBUF=c;
while(TI==0);
TI=0;
}
//
void main()
{
P3M0=0X00;
P3M1=0X00;
P5M0=0X00;
P5M1=0X00;
SCON = 0x50; //
AUXR |= 0x40; //
AUXR &= 0xFE; //
TMOD &= 0x0F; //
TL1 = 0xF3; //
TH1 = 0xFC; //
ET1 = 0; //
TR1 = 1; //
while(1)
{
if(K1==0) //串口发数据开关
{
Putc_to_SerialPort(2);
DelayMS(100);
}
}
}
//多机通信分机接收程序
/
#include<stc8g.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define p_sw1 0x00//p3.0,p3.1
sbit LED1=P3^2;
sbit LED2=P3^3;
//
void DelayMS(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//
void main()
{
P3M0=0X00;
P3M1=0X00;
P5M0=0X00;
P5M1=0X00;
SCON = 0x50; //
AUXR |= 0x40; //
AUXR &= 0xFE; //
TMOD &= 0x0F; //
TL1 = 0xF3; //
TH1 = 0xFC; //
ET1 = 0; //
TR1 = 1; //
LED1=LED2=1;
while(1)
{
if(RI) //收到串口数据
{
RI=0;
switch(SBUF) //串口数据入开关
{
case 0: LED1=~LED1;LED2=1; DelayMS(100);break; //
case 1: LED2=~LED2;LED1=0; DelayMS(100);break; //
case 2: LED1=~LED1;LED2=LED1; DelayMS(100);break; //
case 3: LED2=~LED2;LED2=LED1; DelayMS(100);break;
}
}
else LED1=LED2=1; //
DelayMS(100);
}
}