|
從機(jī)的代碼
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void UART_init() //從機(jī)需要開中斷
{
TMOD = 0x20; //定時(shí)器1,工作方式2:8位、自動(dòng)重裝 0x0010_0000
TH1 = 0xfd; //fd: 9600bps @ 11.0592M
TL1 = 0xfd; //e8: 1200bps @ 11.0592M
//f4: 2400bps @ 11.0592M
REN = 1; //允許串口接收
SM0 = 1;
SM1 = 1; //SM0和SM1:串口工作模式3,主從模式 + 波特率可變
SM2 = 1; //只接收地址(從機(jī)如此配置,主機(jī)不需要)
TI=0;
RI=0;
ES = 1; //開串口中斷
TR1 = 1; //啟動(dòng)定時(shí)器1
EA = 1; //中斷 總開關(guān)
}
void main()
{
UART_init();
}
void ssio() interrupt 4 //從機(jī)地址是0x01
{
uchar addr;
ES=0;
addr=SBUF;
RI=0;
if(addr==0X01)
{
P1=0X00;
SBUF=0XAA;
while(!TI);
TI=0;
while(!RI);
RI=0;
if(SBUF==0XFA)
P1=0XF0;
}
ES=1;
} |
|