


单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,*,,第一章,8086程序设计,,第二章,MCS-51,单片机程序设计,,第三章 微机基本系统的设计,,第四章,存贮器与接口,,第五章,并行接口,,第六章,计数器、定时器与,接口,,第七章,显示器与键盘,接口,,第八章,串行通信及接口,,第九章 数模转换器和模数转换器接口,,MCS-51,单片机的结构,,MCS-51,单片机程序设计,,MCS-51,单片机,系统的程序设计,,本章知识点,,MCS-51,单片机的结构,,MCS-51,单片机程序设计,,MCS-51,单片机,系统的程序设计,,本章知识点,,MCS-51,单片机的结构,MCS-51,单片机采用程序存储器和数据存储器分别寻址的方式,程序存储器和外部数据存储器的寻址范围均为,64,K,,如采用外部程序存储器,用信号,-,PSEN,控制读入程序存储器中的程序或数据,,访问程序存储器采用的指令:,,,MOVC A,@A+PC,,MOVC,,A,@A+DPTR,MCS-51,单片机的结构,内部数据存储器,256,个字节,,,,00-7,FH,的,128,个字节为通用数据存储器,,,80-,FFH,的,128,个字节为特殊寄存器,是,MCS-51,单片机的累加器,A,,,寄存器,B,,,中断控制,片内外围电路如,I/O,口、定时器、串行接口所用的寄存器,,,MCS-51,单片机的结构,内部数据存储器00-7,FH,的结构,,MCS-51,单片机的结构,外部数据存储器寻址范围为,64,K,,,包括,外部数据存储器,和,I/O,,通过数据指针指定外部数据存储器的地址,,,MOVX A,,,@DPTR,,MOVX @DPTR,,,A,,采用间接地址指定外部数据存储器的地址,,,MOVX A,,,@R0/R1,,MOVX @R0/R1,,,A,,MCS-51,单片机的结构,MCS-51,单片机的片内外围电路,,4,个并行,I/O,口,P1,、,P2,、,P3,、,P4,的操作通过对应的寄存器进行。
定时器采用,TMOD,、,TCON,、,THX,、,TLX,等寄存器串行接口采用,SCON,、,SBUF,等寄存器MCS-51,单片机的有,5,个中断源,分别是,2,个外部中断、,2,个定时器中断和,1,个串行接口中断,MCS-51,单片机的结构,,MCS-51,单片机程序设计,,MCS-51,单片机,系统的程序设计,,本章知识点,,MCS-51,单片机程序设计,,程序设计方法,,,MCS-51,单片机,程序设计,,,程序设计方法,1,.作程序流程图,,,根据题意,找出最合理、简便的解决方法并作程序流程图流程图分粗略和详细两种,粗略流程图给出大致步骤,而详细流程图则给出每一步骤细节对一些大问题,先给出粗略流程图以得出总体概念,再作详细流程图对每一步骤作具体描述;,,程序设计方法,2,.存贮单元分配,,,根据题意合理地分配程序和数据在存贮器中地址存贮单元分配合理,可使编程简单和避免程序出错应避免程序区与数据区相互混合、交叉程序设计方法,3,.源程序编制,,,将流程图中每步所规定的操作用程序语言实现,可选用不同指令,各人所编程序可能不同程序质量衡量标准为:程序短,占用存贮单元少,运行时间短,而且程序结构合理。
源程序,,,标号,,操作码,,操作数,,,ORG 4000H MOV A,#00H,,MOV 30H,,,A,,INC A,,MOV DPTR,#4100H,,MOVX @DPTR,A,,INC A,,INC DPTR,,MOV A,R,2,,,MOVX @DPTR,A,,HE: SJMP HE,把直接数,00,H,送到内部,RAM30H,单元中,把直接数,01,H,及,02,H,分别送到外部,RAM4000H,、,4001H,单元中,MCS-51,单片机程序设计,简单程序,,设计,MCS-51,程序时,需注意内部存储器访问和外部存储器访问,,MCS-51,单片机程序设计,分支程序常用的指令,,MCS-51,单片机程序设计,分支程序,在寄存器,R,2,中存有数码0,~,F,,,要求将其转换为,ASCII,码,并存于外部存贮器,4100,H,单元中,,,MCS-51,单片机程序设计,利用散转指令实现多分支程序的方法,,,将直接转移指令如,AJMP、LJMP,构成转移表,将此表的首地址装入数据指针,DPTR,,,把标志单元的内容乘以转移指令表所采用的直接转移指令的长度,(,AJMP,为,2、,LJMP,为,3),,并传送到累加器,A,中,然后调用,JMP@A+DPTR,指令实现散转。
MCS-51,单片机程序设计,,利用地址偏移量表实现多分支程序,,适用于各个处理程序的目的地址均在同一页的情形,,,先将处理程序的目时地址减去表的首地址,(,应在同一页内,不大于,256,字节,),构成一偏移量表,将表的首地址装入数据指针,DPTR,,,利用查表指令,MOVC A,,,@A+DPTR,求出偏移量,然后利用,JMP@A+DPTR,实现散转MCS-51,单片机程序设计,利用目的地址表实现多分支程序,,,将目的地址直接转成目的地扯表,然后利用查表的方法根据标志单元的内容求出目的地址,将此地址装入数据指针,DPTR,,,将累加器,A,清零,再利用,JMP @A+DPTR,实现散转利用地址偏移量表实现多分支程序,适用于各个处理程序的目的地址均在同一页的情形.,,循环程序,,将内部,RAM,的,40,H ~4FH,单元置为,00,H~0FH,,,,以,R,2,作为循环计数器,,MCS-51,单片机程序设计,,,循环程序,,把内部,RAM40H ~4FH,的内容传送到外部数据存储器的,4100,H ~410FH,单元内以,R,2,作为循环计数器,,MCS-51,单片机程序设计,,,循环程序,,将外部数据存储器中,4100,H ~410FH,单元置为,00,H~0FH,,以内部,RAM 32H,作为循环计数器,,MCS-51,单片机程序设计,,,循环程序,,将,4100,H ~410FH,单元的内容传送到,4200,H,开始的单元中。
以内部,RAM 32H,作为循环计数器,,,用,30,H、31H,作为,4200,H,的地址计数器,,MCS-51,单片机程序设计,,,MCS-51,单片机程序设计,,查表程序,在,R,2,寄存器存有数,0,~9,的,BCD,码,利用查表程序求其平方值,并存于,4100,H,单元中先将0,~9,平方值的,BCD,码存于程序存贮器中,标号为,TABLE,MCS-51,单片机的结构,,MCS-51,单片机程序设计,,MCS-51,单片机,系统的程序设计,,本章知识点,,,MCS-51,单片机系统的程序设计,,专用系统的程序构成,,,,MCS-51,单片机专用系统程序的设计,,专用系统的程序构成,,,一个完整的系统程序的结构,,,专用系统的系统程序必须具备一个完整的结构,保证在系统上电时能自动启动,并根据系统硬件的要求执行一定功能,,,,,,MCS-51,单片机专用系统程序的设计,MCS-51,单片机具有,64,K,程序存储器和,64,K,数据存储器的,寻址能力,数据存储器和,I/O,设备统一编址均在,64,K,的范围内复位后的程序指针为,0000,H,,,因此在设计系统硬件时必须将程序存储器的地址安排在,0000,H,开始的存储器,使其与系统复位后的程序指针保持一致。
同时在设计系统程序时,也必须将程序的起始地址安排在,0000,H,开始的单元中MCS-51,单片机专用系统程序的设计,MCS-51,单片机的堆栈安排在内部,RAM,的,00,H~7FH,单元由于,00,H~1FH,为寄存器组,,20,H~2FH,为位操作单元,此外还需在,30,H,以后的地址安排部分工作单元,,因此堆栈通常只能安排在大于,30,H,的内部,RAM,中,MCS-51,单片机的,堆栈操作,采用了在数据压入堆栈时,堆栈指针加大,而数据弹出堆栈时,堆栈指针减小的方法,因此可将堆栈指针设置为在内部,RAM,中堆栈的最小地址减,1,应估计子程序和中断程序使用的数量和数据压入弹出堆栈的数量,以,确定堆栈大小,如堆栈估计不足将导致程序无法执行,形成死机MCS-51,单片机专用系统程序的设计,MCS-51,单片机采用,5,个中断,:即外部中断,0,、定时器,T0,中断、外部中断,1,、定时器,T1,中断和串行口中断,,,中断服务程序入口地址分别为,0003,H,、,000BH,、,0013H,、,001BH,和,0023,H,如程序中使用上述中断,就在上述地址内存放相应的,转移指令,,在执行中断程序时,通过这,5,个地址的转移指令跳转到相应的中断服务程序中。
地址,0000,H,到,0003,H,之间只有,3,个字节,,因此启动地址通常只能安排转移指令,使程序在启动后转移到主程序,。