4.2 单片机系统的工作原理
图4.1 单片机系统框图
单片机最小系统是将单片机接上时钟电路和复位电路所得,使用的单片机是AT89S52,在单片机最小系统上加上温度传感器DS18B20、放大电路OP07、模/数转换器ADC0809就可以进行温度数据的采样。工控机与单片机之间连上MAX232进行MODBUS协议通讯。
AT89S52的功能:
① 拥有灵巧的8位CPU和在系统可编程Flash
② 晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)
③ 内部程序存储器(ROM)为 8KB
④ 内部数据存储器(RAM)为 256字节
⑤ 32 个可编程I/O 口线
⑥ 8 个中断向量源
⑦ 三个 16 位定时器/计数器
⑧ 三级加密程序存储器
⑨ 全双工UART串行通道
4.3 单片机系统的流程图
图4.2 单片机系统主程序流程图
初始化程序
{ SCON=0x50; //UART为模式1,8位数据,允许接收
TMOD=0x21; //定时器1为模式2,8位自动重装,由TCON中的TRx控制
PCON=0x00; //SMOD=0
TH1=0xFD; //Baud:9600 fosc="11".0592MHz,波特率可变UART为模式1
TL1=0x00;
PS=1; //串口优先最高
EA=1; //总中断
ES=1; //串口中断
TR1=1; //timer 1 run
Rptr=0;
RecvOk=0;
}
串口中断程序
void Uart() interrupt 4 using 1//串口中断
{ byte m;
ES=0;
if(TI)
TI=0;
else if(RI) //判断串口接收寄存器SBUF是否满了,满则RI由硬件置1
{ RI=0; //软件清零
m=SBUF;
if(Rptr<BufMax)//初始化BufMax=20
{ Rbuf[Rptr]=m;//将接收到的数据存到数组里(除了HEAD)
Rptr++;
}
if(m==HEAD)
Rptr=0;
if(m==OVER) //判断是否接收完毕
RecvOk=1; //接收完毕标志位
} 组态王与单片机通讯的开发 (4):http://www.751com.cn/zidonghua/lunwen_9546.html