AT89C52是Atmel的经典51内核单片机,8K Flash、256字节RAM、三个定时器、一个全双工串口。按现在的眼光看配置确实寒酸,但教学实验和小家电项目里还在大量使用,原因很简单:便宜、资料多、上手快。
最小系统还是老三样:电源、复位、晶振。晶振一般选11.0592MHz,不是为了跑得快,而是这个频率分频之后能得到标准的串口波特率。复位电路用10微法电容配10K电阻,上电给个高电平脉冲就行。
定时器是这块芯片最常用的外设。做1毫秒的系统节拍,用定时器0的方式2自动重装最省事,不用在中断里反复赋初值。12T模式下算下来初值大概是0xFC,装进TH0和TL0就能跑。要是换成1T的STC芯片,初值完全是另一套,别照抄。
串口配置有几个固定动作:SCON设成0x50,TMOD把定时器1设成方式2,波特率9600在11.0592MHz晶振下TH1填0xFD、SMOD置0。收发标志TI和RI必须软件清零,这一点新手经常忘,忘了就只收到一次数据。
中断写法不复杂:EA置1开总中断,ES置1开串口中断。中断函数里先判断RI,读走SBUF再清RI;发送时把数据写进SBUF,然后等TI置位再清掉。中断里别做耗时操作,不然会丢字节。
调试时最常见的两个问题:波特率对不上,先查晶振频率和SMOD位;串口乱码,多半是没共地,或者电平不匹配。单片机出来的是TTL电平,接电脑的RS232得加MAX232这类芯片转换,直接对接是收不到正确数据的。
现在新项目一般用STC89C52或者STC15系列,指令兼容,串口直接下载,不用再买编程器。维护老设备时注意看芯片丝印和下载方式,有些老板子只支持并行编程,换芯片前先确认清楚。
上一篇:InTouch组态软件入门:从画面组态到跟PLC通信
下一篇:没有了