为了祢补单片机软件设计教材资源的缺乏,本资料着重从软件设计的角度介绍MC68HC908GP32单片机的软件编写方法和应用示例。利用独立的文章的形式介绍了此单片机的端口、琐相环、AD转换、串行通信、键盘中断、定时器以及外连芯片MC11489等应用。
本着用多少学多少的原则,删除了许多不常用的寄存器值得含义,对重要的知识点均以加粗方式标出。达到速成的目的。
此资料所有代码经作者精心组织编写并在北京理工大学卡尔飞思实验室BMTC——MC68HC08单片机系统V3.0实验板调试通过。
作为第一篇从软件介绍MC68HC08的文章,我们先从软件的角度认识认识这个四十多只脚的东东吧。
虽然它只有四十多只管脚,但是,几乎所有的管脚都是复用的,即身兼两职。主要可分为电源,晶振,ABCDE五组端口,中断,复位等等。
趁着大家精力还算旺盛,先说最有用的,最容易的。ABCDE五组端口
每组端口都有两个寄存器,一个叫方向寄存器,用来说明这个端口用作输入还是输出。五个端口的方向寄存器分别叫做:DDRA,DDRB,DDRC,DDRD,DDRE。每个寄存器都有八位,分别为对应管脚的输入输出方向。如DDRB=0b01100000,(b指二进制数。此数亦可以写成十六进制数0x60)规定B端口的第五第六两管脚作为输出,其它作为输入。
另一个叫数据寄存器,也是八位。分别是PTA到PTE。端口当作输出的时候,可以写寄存器。端口当作输入的时候可以读寄存器。当某位为1的时候,端口为管脚高电平,当为、0的时候,端口管脚为低电平。比如,我想让B端口的第五位(作输出)为低电平,则写作PTB_PTB5=0;
每个端口都能作为平常的输入输出端口。另外,每个端口都有第二功能。
A端口:八个管脚
常用作键盘输入。此时,端口作为输入。硬件自动置A口所有位为高电平。某键被按下时,产生低电平,从而达到检测按键的目的。键盘操作见《外部中断和键盘中断》一文。
B端口:八个管脚
常用作A/D转换器输入端口。对应了八个输入通道。
C端口:六个管脚
可用作LED指示灯的输出接口。如本实验室的开发板将PB0-PB4与五个指示灯相连。低电平点亮。
D端口:六个管脚
功能比较多,有计数器输入管脚2个,SPI通信管脚2个等
E端口:只有两个管脚
经常作为串口收发端,PTE0为TX,PTE1为RX
中断信号: 管脚,平常为高电平,当收到低电平信号时产生一个外部中断。
晶振:OSC2 OSC1 和COMXFC
复位信号管脚
。
电源管脚:略
第二个主题:程序的基本框架
MC68HC08程序的框架比较统一,下面介绍两种最常用的。
查询式程序框架:
//step0 变量定义
#include
#include
void main(void){
//step1 初始化CONFIG控制字
CONFIG1=0x01;
CONFIG2=0x01;
//step3 初始化锁相环
PCTL=0X00;
PBWC=0X80;
PMSH=0X03;
PMSL=0XD1;
PMRS=0XD0;
PMDS=0X01;
PCTL=0X32;
DDRC=0XFF;
PTC=0XFF;
//step4设置其它初始化控制字
//step4 进入循环
for(;;){
//step5 在循环中作端口输入输出的工作
if (寄存器可以读) 读寄存器;
if(寄存器可以写)写寄存器;
…
}
中断式程序框架:
Step1-3 与查询式一样
//Step4 设置其它初始化控制字,并开启有关中断。
//step5开中断
EnableInterrupts;
//step6 进入死循环
For(;;);
}
//step7 设计中断服务程序,就是中断响应函数,有几个中断向量就写几个
Interrupt 中断号 intResponce(void){
禁止有关中断;
进行寄存器读写操作等;
允许有关中断;
}
//其中intResponce是函数的名称,可以自行订制。
熟悉查询与中断的基本工作方式是了解单片机程序的前提。下面就要介绍各种很有用的功能啦。不过为了先拣好玩的说,另外为了给以后的文章做基础。先说一说它最友好的输出方式——五位七段数码的显示方法