单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,08,系列单片机简介,Freescale,的,08,系列单片机主要有,HC08,、,HCS08,和,RS08,三种类型。,HC08,推出较早,种类较多,针对不同场合都可以选到合适的型号。,HCS08,是最近推出的,08,系列单片机,性价比高,是,08,系列单片机的发展趋势。,RS08,是,HCS08,架构的简化版,其内核体积小,带有精简指令集、满足用户对体积更小、更加经济高效地解决方案的需求,。,指产品状态,存储器类型标志,芯片内核,型号标志,存储器大小,工作温度范围标志,封装标志,特别说明:,Freescale,HC08,芯片以前命名中包含了“,68HC”,部分,如:,MC908GP32,芯片以前的名称是,MC68HC908GP32,,在很多资料中对于,HC08,芯片都沿用了这种方法。,Freescale,单片机基本命名规则,MC,9,0 8,G P,3 2,08系列单片机资源简介,MC68HC908GP32,单片机性能,存储容量:,512B,片内,RAM,;,32K,片内,Flash;,CPU,速度:内部总线频率最高达,8MHz;,33,根通用,I/O,脚,,26,根多功能,I/O,脚和,5,或,7,根专用,I/O,脚,(,复用,),SCI,和,SPI,;,两个,16,位双通道定时器接口模块,(TIM1,和,TIM2),;,8,位键盘中断接口;,增强的,HC05 CPU,结构;,16,种寻址方式;,16,位变址寄存器和堆栈指针;,GP32,内部结构简图,电源和时钟类引脚,控制类引脚,I/O,类引脚,其它,GP32,的外部引脚,GP32,最小系统,要使,MCU,能工作,至少必须有电源与滤波电路、晶振(即时钟)电路和复位电路。,GP32,存储器组织,-RAM,CPU08,可寻址,64KB,地址空间,$0000,$FFFF,,分成多个作用不同的区段。,$0040,用户,RAM,栈,RAM,$023F,SP,$00FF,第,0,页,寻址方便,但,SP,寄存器初值为,$00FF,,可用指令调整为,$023F,GP32,存储器组织,-FLASH,$8000,用户代码区,$FDFF,可随机按字节读,不可随机写,写前要先擦除,且需按一定步骤进行,GP32,存储器组织,-,寄存器,每个寄存器都有一个,固定的地址,,如,$0000,是,A,口数据寄存器的地址,指令中出现地址,$0000,则是访问,A,口数据寄存器;,为便于使用,通常用,名字代替地址,,做法是用伪指令将地址与“名,”,对应起来。如:,C,语言格式:,#define PTA *(volatile unsigned char*)0 x00,汇编语言格式:,或,PTA=$0000,GP32,存储器组织,-,向量区,$FFDC$FFFF,为向量区,存放中断及复位后程序的入口地址;,.org 0 xffdc /,中断向量表起始地址,vectab,:,.word,isrDummy,/,时基,.word,isrDummy,/AD,转换,.word,isrDummy,/,键盘,.word,isrDummy,/SCI,发送,.word,isrDummy,/SCI,接收,.word,isrDummy,/SCI,错误,.word,isrDummy,/SPI,发送,.word,isrDummy,/SPI,错误,.word,isrDummy,/TIM2,溢出,.word,isrDummy,/TIM2,通道,1,输入捕捉,/,输出比较,.word,isrDummy,/TIM2,通道,0,输入捕捉,/,输出比较,.word,isrDummy,/TIM1,溢出,.word,isrDummy,/TIM1,通道,1,输入捕捉,/,输出比较,.word,isrDummy,/TIM1,通道,0,输入捕捉,/,输出比较,.word,isrDummy,/CGM,的,PLL,锁相状态变化,.word,isrDummy,/IRQ,引脚中断,.word,isrDummy,/SWI,指令中断,.word,MainInit,/RESET(,见主程序定位处,),HC08 CPU,结构,目标代码与,M68HC05,系列单片机向上兼容,16,位堆栈指针,SP,、,16,位变址寄存器,HX,8MHz CPU,内部总线频率,64KB,程序,/,数据存储器空间,16,种寻址方式,存储器之间数据直接传送,8,位,8,位乘法、,16,位与,8,位除法指令,,BCD,指令,模块化结构,可扩展的内部总线定义可使寻址范围超过,64KB,低功耗的,STOP,、,WAIT,模式,HC08 CPU,内的,5,个寄存器,8,位通用寄存器,用来存放操作数和运算结果。复位不影响。,16,位地址寄存器,也可存放临时数据。,H-,高,8,位,,X-,低,8,位,可分开使用。复位后,H,被清零,指向下一个栈地址,采用递减的结构(即进栈,SP,减,1,,出栈,SP,加,1,)。复位后,SP,为,$00FF,。,存放下一条要执行的指令地址,复位后装入,FFFE:FFFF,中的内容。,C,:,D7,上有进,/,借位,置,1,Z,:,运算结果为,0,,置,1,N,:,D7,为,1,,则置,1,I,:,I,为,1,,则禁止中断,H,:,D3,上有进位,置,1,V,:,补码运算有溢出,置,1,HC08,指令系统,CPU,执行的操作命令称为,指令,。,CPU,执行的各种指令集合,称为该处理器的,指令系统,。,HC08 CPU,共有,270,条具体指令。,指令格式:,指令由两部分组成:,操作码,和,操作数,。,操作码,:规定指令进行什么操作;,操作数,:指令操作的对象,指令所占字节数:,最短,1,字节,最长,6,字节。,指令执行时间:,最快,1,个,CPU,时钟振荡周期,最慢,6,个,。,确定指令中操作数的方法称为,寻址方式,(Addressing Mode),。,HC08,的寻址方式共有,16,种。,HC08,的寻址方式,-1,编号,指令,操作,寻址方式,(1),INCA,(A)+1,A,内在,INH,(2),LDA#opr8,#,opr8,A,立即数,IMM,(3),LDA addr8,addr8 A,直接,DIR,(4),LDA addr16,addr16 A,扩展,EXT,(5),LDA,X,HX A,无偏变址,IX,(6),LDA addr8,X,addr8+HX A,8,位偏移变址,IX1,(7),LDA addr16,X,addr16+HX A,16,位偏移变址,IX2,(8),LDA addr8,SP,addr8+SP A,8,位偏移堆栈,SP1,(9),LDA addr16,SP,addr16+SPA,16,位偏移堆栈,SP2,(10),BRA,rel,(PC)+2+rel,PC,相对,REL,,,用于相对跳转,HC08,的寻址方式,-2,编号,指令,操作,寻址方式,(11),MOV#,opr8,addr,#,opr8,addr,立即数,-,直接,IMD,(12),MOV addr1,addr2,(addr1)(addr),直接,-,直接,DD,(13),MOV,addr,X,+,addrHX;(HX)+1HX,直接,-,变址、加,1,DIX+,(14),MOV,X+,addr,HXaddr;(HX)+1HX,变址、加,1-,直接,IX+D,(15),CBEQ,X+,rel,若,A=HX,则转移,,(HX)+1HX,无偏变址、加,1,IX+,(16),CBEQ opr8,X+,rel,若,A=HX+addr8,则转移,,(HX)+1HX,8,位偏移变址、加,1,IX1+,说明:,IX+,和,IX1+,只用于,CBEQ,指令,通常用于寻找一段存储区中是否有与,A,中相等的数。,练习,请指出下列各指令中源和目标操作数,lda,#$40,lda,$40,ldhx,#$8000,lda,x,lda,$40,x,mov,#%10,$40,mov,%10,$40,mov,%10,x+,$40,A,$40,A,$8000,HX,HX,A,$40+HX,A,%10,$40,%10,$40,%10,HX,(HX)+1 HX,HC08,指令系统简表,数据传送类,-,取,存指令,例:,LDA#$80,LDX#%10000000,LDHX#80,除立即数外,与取数指令对应。例:,STA$80,STX%100000000,STHX$80,数据传送类,-,堆栈操作,进入中断服务程序或子程序时,通过,入栈,来保护各寄存器中的内容。,退出时,通过,出栈,还原各寄存器。,数据传送类,-,寄存器间互传,数据传送类,-,存储器间互传,例:,MOV N1,N2,MOV N1,X+,算术运算类,-,加减,加、减指令的第一操作数在,A,中,第二操作数为立即数或存储器,,结果放在,A,中。,根据运算结果改变,V,、,H,、,N,、,Z,、,C,标志位:,C,若,D7,有进,(,借,),位,则置,1,,否则清,0,。,V,若溢出,则置,1,,否则清,0,。,H,若,D3,有进位,则置,1,,否则清,0,(减法不影响,H,)。,N,若,D7,为,1,,则置,1,,否则清,0,。,Z,若结果为,0,,则置,1,,否则清,0,。,算术运算类,-,加减,如:,ADD#$80,ADD N1,ADD,X,如:,SUB#$80,SUB N1,SUB,X,算术运算类,-,乘除,MUL,:,X*A,,乘积的高字节放入,X,中,低字节放入,A,中。同时清标志位,H,和,C,,不影响其它标志位。,DIV,:,(H,、,A)/X,,商放入,A,中,余数放入,H,中。若商大于,$FF,,则置标志,C,,否则清,C,。若商为,0,,置标志,Z,,否则清,Z,。不影响其它标志位。,算术运算类,-,自加,1,、减,1,可对,A,、,X,和存储单元自加或自减,影响,V,、,N,、,Z,。,算术运算类,-,取反和求补,若,A=$FF,,执行,COMA,后,,A=$00,。,若,A=$00,,执行,COMA,后,,A=$FF,。,若,A=$FF,,执行,NEGA,后,,A=$01,。,若,A=$00,,执行,NEGA,后,,A=$00,。,算术运算类,-,比较,比较指令执行减法,但,不改变操作数,,只影响标志位,算术运算类,-,清零、测试,清零指令将操作数清,0,,同时清,V,、,N,标志,置,Z,标志,不改变,H,、,I,、,C,标志。,测试指令将操作数与,0,比较,清,C,标志,改变,N,、,Z,标志,不影响其它标志。,算术运算类,-SP,与,HX,自加,两条指令均不影响标志位,逻辑运算类,清,V,标志,改变,N,、,Z,标志,不影响,H,、,C,标志,位操作,位测试,与,AND,相同,但不影响操作数,清,/,置,C,标志,清,/,置中断标志,I,清,/,置,$00$FF,存储单元的第,n,位,移位类,-,左移,只能移,8,位,,b7,C,,其它左移,1,位,0,b0,,相当于乘2。,ASL,与,LSL,功能完全相同。,移位类,-,右移,ASR,:,b7,不变,其它位右移,1,位,,b0,移入,C,,相当于除以2。,LSR,:0移入,b7,,其它位右移,1,位,,b0,位移入,C。,移位类,-,循环移位,循环移位只是,b7b0,、,C,共,9,个位的移动,程序控制类,-,一般转移指令,标志位测试,无符号比较,有符号比较,位测试转移,无条件转移,全部相对转移,范围:,-128127,程序控制类,-,特殊转移,程序控制类,-,跳转,无条件长跳,子程序调用,相对子程序调用,子程序返回,其它指令,中断,BCD,调整,特殊指令,练习,ldhx,#$0040,mov,#10,$50,mov,#-128,$51,mov,#127,$52,findmaxmin,:,lda,x,cmp,$51,blt,findmin,sta,$51,jmp,next,findm