单片机与接口技术总复习总复习基本内容一、单片机的特点与应用二、MCS-51单片机的硬件结构三、MCS-51单片机指令系统四、汇编语言程序设计五、C51程序设计六、MCS-51单片机系统扩展技术七、中断与定时八、MCS-51单片机IO扩展及应用九、串行通信及其接口十、MCS-51与DAIAD转换接口一、单片机的特点与应用特点:体积小,功耗低软硬结合,易于组成各种应用系统,在线控制可靠性高应用广泛等单片机的发展趋势:高性能化大容量内装化MCS-51单片机系列分类内部资源、工艺应用领域工业测控系统智能仪器仪表信息通信智能接口家电军事装备等一、MCS-51单片机的硬件结构CPU-8位的中央处理单元,完成运算和控制功能内部数据存储器(RAM)低128B:按用途分三个区,通用寄存器区、位寻址区、堆栈/用户数据区。各区地址与主要用途。高128B:分布21个可寻址SFR。PSW、A、SP、PC功能与复位状态内部程序存储器ROM(与外部ROM总计64KB)8031无EA-‘0’8051、8751、89514KB2个16位定时器/计数器具有定时、计数功能4个并行I/O端口P0、P1、P2、P3均有I/O功能,注意读引脚操作,P0外接上拉电阻总线扩展AB—P0P2(16)DB—P0(8)CB-ALE、PSEN、WR、RD、EA二、MCS-51单片机的硬件结构串行口—RXD、TXD全双工串行口串口数据传送方式与特点。波特率定义、如何确定?中断控制系统—51系列5个中断源入口地址与中断控制时钟电路振荡器周期机器周期指令周期三、MCS-51单片机指令系统指令系统—机器指令集。以助记符表示的计算机指令称汇编语言。寻址方式—确定操作数单元地址的方式。支持字节操作,位操作常用指令数据类传送MOVMOVCMOVXSWAPPOPPUSH运算类ADDADDCSUBBDIVMUL逻辑运算ANLORLXRLCPLRRRRCRLRLC控制类DJNZCJNEJZJNZSJMPLJMPACALLLCALLRETRETI位操作MOVSETBCLRJCJNCJBJNBJBC四、汇编语言程序设计数据传送:内存←→内存,内存←→外存数制转换:十六进码,BCD码,ASCII码组字拆字:BCD个位、十位拆字组字软件定时:通过CPU执行指令而实现定时,定时时间=执行指令数*T运算程序:加、减查表程序:MOVC查找LED字形码或其他数表关键字查找:CJNE、XRL位操作程序:SETB、CLR四、程序设计例:从外部RAM2000H单元开始存放16个无符号单字节数,找出其中最大数,并把结果存入内部RAM20H单元。ORG0100HSUB1:MOVDPTR,#2000;数据首地址MOV20H,#00HMOVR0,#16NEXT0:MOVXA,@DPTR;取数CJNEA,20H,LOOP;A=(20H),C=‘0’SJMPBACKLOOP:JNCRESETSJMPBACKRESET:MOV20H,A;A(20H),重置20HBACK:INCDPTRDJNZR0,NEXT0RET开始初始化从外部RAM取数到A16个数比较结束?推出YN指针调整A/=(20H)?A(20H)?NYYN(20H)最大数四、程序设计【例】将30H单元内的两位BCD码拆开并转换成ASCII码,存入RAM两个单元中。程序流程及参考程序如下:结束取数据低4位转换成ASCII码存ASCII码取数据高4位转换成ASCII码存ASCII码开始ORG2000HMOVA,30H;取值ANLA,#0FH;取低4位ADDA,#30H;转换成ASCII码MOV32H,A;保存结果MOVA,30H;取值SWAPA;高4位与低4位互换ANLA,#0FH;取低4位(原高4位)ADDA,#30H;转换成ASCII码MOV31H,A;保存结果SJMP$END四、程序设计•单循环定时程序:(fosc=12MHz)•设计一个100us的定时程序.TimeEQUdataORG0100H1DELAY:MOVR0,#Time1LOOP:NOP1NOP2DJNZR0,LOOP2RET定时值=4*1*data+3*1(us)data=(100-3)/4=24….1data最大值=256定时最大值=4*256+3=1024+3(us)4T•多循环定时程序:(fosc=12MHz)•试求出下列程序的定时值.Time1EQU25Time2EQU100ORG0100H1DELAY:MOVR1,#Time21LOOP1:MOVR0,#Time11LOOP0:NOP1NOP2DJNZR0,LOOP02DJNZR1,LOOP12RET•定时值=100[(25*4)+1+2]+3=10303us=10.3ms【例】软件定时程序设计:四、程序设计【例】查表程序设计:•将存于10H中的数据用共阳LED显示。•源程序1:使用MOVCA,@A+DPTRORG0100HDisplay:MOVA,10HMOVDPTR,#ledtabMOVCA,@A+DPTRMOVP1,ASETBP3.0;高电平有效(共阳)RETLedtab:0C0H,0F9H,0A4H,0B0H,99H;0~492H,82H,0F8H,80H,90H;5~9P18P3.0五、C51程序设计1、keilC和ANSIC的异同keilC主要针对51系列单片机的结构进行程序设计2、变量定义格式C语言:[存储属性]数据类型变量名表keilC:[存储属性]数据类型[存储类型]变量名表存储类型存储区及其描述DATARAM的低128个字节,可在一个周期内寻址BDATADATA区的16个字节的可位寻址区IDATARAM区的高128个字节,必须采用间接寻址PDATA外部RAM的256个字节,通过P0口的地址对其寻址,使用指令MOVX@Rn,需两个指令周期XDATA外部RAM存储区,使用DPTR寻址CODE程序存储区,使用DPTR寻址变量数据类型—确定存储单元长度五、C51程序设计2、变量定义格式C语言:[存储属性]数据类型变量名表keilC:[存储属性]数据类型[存储类型]变量名表例:staticunsignedchardatax五、C51程序设计五、C51程序设计例:对共阳LED循环显示0~9。设字型口、位控口均采用同相驱动。#includereg51.hsfrsegcon=0x90;sbitbitcon=P2^0;voidmain(){unsignedcharcodeled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedintx;/*x=0~9*/while(1){for(x=0;x=9;x++){segcon=led[x];bitcon=1;/*共阳LED*/delay(2);}}}六、MCS-51单片机系统扩展技术MCS-51系统扩展总线数据总线—P0地址总线—P2P0控制总线—ALEPSENRDWREA存储器扩展扩展能力:16位地址线,寻址范围64KB存储器地址映像:高位片选地址+存储器片内地址形成16位系统地址编址技术ROM与片外RAM独立编址,寻址空间为64KB。空间重叠,不会冲突原因片外RAM与I/O扩展统一编址,总寻址空间为64KB地址译码:线选法、译码法六、MCS-51单片机系统扩展技术扩展电路注意的问题读写控制片选控制地址的分配:地址是一个范围空间例:试以一片Intel2716和一片Intel6116组成一个既有程序存储器又有数据存储器的存储器扩展系统,请画出逻辑连接图,并说明各芯片地址范围。地址范围分析:P2.6、P2.7悬空,可取任意Y0:xx00000000000000H~xx00011111111111HY1:xx00100000000000H~xx00111111111111HY2:xx01000000000000H~xx01011111111111HY3:xx01100000000000H~xx01111111111111H74LS139ABGP2.3P2.4P2.5Y0Y1Y2Y3译码法:2716、6116均2K容量,占用11条地址线用74LS1392-4译码器,连接如图:83+5VG74LS373DQD0~D7A0~A7A8~A10OED0~D7A0~A7A8~A10OEWECECE27166116P0ALEP2.2~P2.0PSENEAWERDY0Y12716地址范围:Y0如:0000H~07FFH6116地址范围:Y1如:0800H~0FFFH例:试以一片Intel2716和一片Intel6116组成一个既有程序存储器又有数据存储器的存储器扩展系统,请画出逻辑连接图,并说明各芯片地址范围。分析:2716(2KB)片选地址(5条)片内地址(11条)地址范围:1000H~7FFFH0XXXX000H~7FFH如:000101000H~17FFH6116(2KB)片选地址片内地址地址范围:8000H~FFFFH1XXXX000H~7FFH如:100008000H~F7FFH线选法线选法83+5VG74LS373DQD0~D7A0~A7A8~A10OED0~D7A0~A7A8~A10OEWECECE27166116P0ALEP2.2~P2.0PSENP2.7EAWERD1杭州电子科技大学HangzhouDianziUniversity七、中断与定时中断—CPU暂停当前程序,转向中断处理程序,结束转回中断响应及响应条件中断入口地址中断响应优先级同级响应顺序中断嵌套中断服务程序设计定时器/计数器功能—计数,定时4种工作方式,TMOD设置,初值计算,初值重置方式程序设计—中断方式、查询方式例1:单片机用内部定时方法产生频率为50kHz等宽矩形波,假定单片机的晶振频率为12MHz,请编程实现。解:(方式2)定时常数的计算:TC=28-10/1=246TH0=246,TL0=246。通过P1.0产生脉冲20us查询方式定时源程序如下:ORG0000HLJMPMAINORG0030HMAIN:MOVTMOD,#02HMOVIE,#00HSETBTR0MOVTH0,#246MOVTL0,#246LOOP:JNBTF0,LOOPCPLP1.0CLRTF0LJMPLOOPEND中断方式定时源程序:ORG0000HLJMPMAINORG000BHCPLP1.0RETIORG0030HMAIN:MOVSP,#60HMOVTMOD,#02HMOVTH0,#246MOVTL0,#246MOVIE,#82HSETBTR0SJMP$初值自动重载装载计数初值中断允许启动计数器定时器其他方式与方式2的异同例2:有晶振频率为6MHz的MCS-51单片机,使用定时器0以定时方法在P1.0输出周期为400us,占空比为1:5的矩形脉冲,以定时方式2编程实现。分析:中断定时时间为40us中断计数器初值=5定时初值X=256-40/2=236主程序如下:ORG0000HLJMPMAINORG000BHLJMPT0-IPGORG0030HMAIN:MOVSP,#60HMOVTMOD,#02HMOVTH0,#236MOVTL0,#236MOVR0,#5MOVIE,#82HSETBTR0SJMP$中断服务程序:T0-IPG:DJNZR0,BACKMOVR0,#5SETBP1.0RETIBACK:CLRP1.0RETI200us40us设定堆栈初始化TH0=TL0=236,TMOD=02H,计数器R0=5中断允许,计数启动等待中断主程序中断服务程序R0=R0-10R0=5,P1.0=‘1’RETIYNP1.0=‘0’Cx51中断程序设计一、中断函数定义Void函数名(void)interrupt中断号using寄存器组例:voidtimer0(void)interr