《辽工大单片机基础知识点--考试必备(共19页).doc》由会员分享,可在线阅读,更多相关《辽工大单片机基础知识点--考试必备(共19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1.MCS-51系列基本特征:1】8位CPU。2】程序存储器【8031无此件,8051为4KBROM;8751为4KBEPROM】3】片内低128B数据存储器RAM。4】片内21个特殊功能寄存器SFR.5】可寻址外部程序存储器和数据存储器空间各64KB.6】4个8位并行I/O接口,1个全双工串行接口。7】2个16位定时器/计数器。8】5个中断源,2个中断优先级。/ALE:当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器的锁存控制信号。即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡器频率的fosc的1/6;若想初
2、步判断单片机芯片的好坏,可用示波器查看ALE端是否有正脉冲信号输出。若有脉冲信号,则单片机基本是好的。/EA:/EA引脚为高电平,单片机访问片内程序存储器,但在PC(程序计数器)值超过0FFFH(对于8051,8751)时,即超过片内程序存储器的4KB地址范围时,将自动转向执行外部程序存储器内的程序;/EA引脚为低电平时,单片机则只访问外部程序存储器,不论是否有内部程序存储器。对于8031来说,因其无内部程序存储器,所以该引脚必须接地,这样选择外部程序存储器。/P3口第二功能:【当输出第二功能信号,该锁存器应预先置1】P3.0RXD串行输入口P3.1TXD串行输出口P3.2/INT0外部中断0
3、P3.3/INT1外部中断1P3.4T0定时器0外部计数器输入P3.5T1定时器1外部计数器输入P3.6/WR外部数据存储器写选通P3.7/RD外部数据存储器读选通/若时钟晶振的振荡频率为fosc,则时钟周期Tosc=1/fosc.机器周期Tcy=12/fosc./寄存器复位情况:SP07HP0P3FFH上电自动复位和按钮复位。/程序计数器PC:程序计数器自动加1.可看成程序存储器的地址指针。程序指针PC不能为用户编程直接使用,是一不可寻址的特殊功能寄存器。PC值为当前正在执行指令的下一条指令地址。数据指针DPTR:地址指针DPTR由DPH和DPL组成。高8位放DPH,低8位放DPL.查表指令
4、:MOVCA,A+PC1000H:MOVCA,A+PC;(A)=30H,执行后(PC)=1001H,(1031)A.该条查表指令只能查询后面的256个单元内容。MOVCA,A+DPTR(DPTR)=8100H,(A)=40H执行后,(8140)A.该条指令可查询后面64KB单元内容。C是代码的意思。2.中央处理器包括运算器和控制器两部分电路。1)累加器ACC。8位寄存器,字节地址为E0H.在指令系统中,累加器ACC助记符A.2)算术逻辑运算单元ALU。ALU用于完成二进制数的四则运算、布尔代数的逻辑运算和位操作。3)程序状态字寄存器PSW.8位寄存器,字节地址为D0HCY:进位标志,常用C表示
5、。位7有进位,为1.AC:辅助进位标志。位3有进位,为1.AC作为BCD码运算调整时的判别位。F0:用户标志RS1、RS0:工作寄存器组控制位。RS1RS0寄存器组片内RAM地址00第0组00H07H01第1组08H0FH10第2组10H17H11第3组18H1FH单片机复位时,RS1=RS0=0,CPU选中第0组为当前工作寄存器。OV:溢出标志。溢出时OV为1.位6或位7有进位,为1.【两个有符号数在进行加法(或减法)运算时,第六位或第七位中仅有1位发生进位(或借位)现象,则OV=1;第六位或第七位都没进位(或借位),则OV=0】P:奇偶标志。若A中有奇数个1,则P置为1,否则为0.(+86
6、)(-56)+)(+122)+)(-57)0A1A(A)=0D0HCY=0AC=1(A)=8FHCY=1AC=0OV=1P=1OV=0P=1/数据传送类(28)算术操作类(24)逻辑运算类(25)控制转移类(17)位操作类(17)MCS-51系列单片机保留给系统使用的程序存储器地址空间:系统复位0000H外部中断0服务程序入口地址0003H定时器/计数器0溢出中断服务程序入口地址000BH外部中断1服务程序入口地址0013H定时器/计数器1溢出中断服务程序入口地址001BH串行口中断服务程序入口地址0023H片内数据存储器|A.低128单元:a.工作寄存器区(00H1FH)b.位寻址区(20H
7、2FH)字节地址【位地址00H-7FH】c.用户RAM区(30H7FH)【只能进行字节寻址,可用于数据缓冲区及堆栈区】B.高128单元(80HFFH)特使功能寄存器区SFRMOVA,#00H将立即数10H传送到累加器AA00HMOVA,26H将26H单元(P1口的直接地址)的内容送累加器AA26HMOVA,R7以R3寄存器内容?H为地址,将该地址单元的内容送累加器A寄存器间接寻址标记A(R7)MOVA,R3将寄存器R3中的内容(即操作数)传送到累加器AAR3MOVCA,A+PC假设指令执行前(A)=10H,(PC)=1000H,将A和PC的内容相加,两者之和作为操作数的存储单元地址,再把该存储
8、单元的内容送A。A(A)+(PC)SJMPLOOPPC(PC)+2,PC(PC)+(LOOP)短转移指令/MOVA,R0ANL20H,#0F0H20H(20H)0F0H逻辑与运算指令ADDA,R3A(A)+(R3)不带进位的加法指令SWAPA(A)74(A)30将累加器A中的高低4位进行相互交换DECR1(R1)(R1)-1减1指令XCHDA,R1(A)30(R1)30将累加器A中低4位与源操作数的低4位进行相互交换,高4位保持不变/MOVDPTR,#data16;#data16DPTRMOVSP,#82H堆栈指针SP先进后出的原则存取数据,开机复位后,SP为07H;入栈操作:先SP加1,后写
9、入数据;出栈操作:先读出数据,后SP减1(SP)=60H,(A)=30H,(B)=70HPUSHdirect;进栈指令POPdirect;出栈指令PUSHA;(SP)+1=61HSP,(A)61HPUSHB;(SP)+1=62HSP,(B)62H结果:(61H)=30H,(62H)=70H,(SP)=62H/MOVA,#0FEHADDA,#0FEH/CLRAA0累加器清0指令ADDA,#00HMOVA,#5AHADDCA,#0A4H;A(A)+0A4H+CY带进位的加法指令/ANLA,#25H;A(A)25H逻辑与运算指令ORL28H,A;28H(28H)v1(A)逻辑或运算指令XRLA,R0
10、;A(A)(R0)逻辑异或运算指令CPLA累加器取反指令/MOVR0,#05HMOVR1,#DATA#data8位立即数,即00HFFHCLRALOOP:ADDA,R1INCR1;R1(R1)+1加1指令DJNZR0,LOOPR0(R0)-1,若(R0)0,则PCLOOP若(R0)=0,则PC(PC)+2MOVSUM,ASJMP$将PC当前的内容与【】相加,结果再送回PC中,成为下一条将要执行指令的地址.原地跳转。MOVC,40H;(40H)C位寻址:PSW位5位地址0D5H,F0,(0D0H).5,PSW.5MOVXA,DPTR;(DPTR)A,读外部RAM/IOMOVXA,Ri;(Ri)A
11、,读外部RAM/IOMOVXDPTR,A;(A)(DPTR),写外部RAM/IOMOVXRi,A;(A)(Ri),写外部RAM/IO“X”表示MCS-51访问片外RAM存储器或I/O采用16位DPTR作为间接寻址,则可寻址整个64KB片外数据存储器空间,高8位地址(DPH)由P2口输出低8位地址(DPL)由P0口输出。采用Ri(i=0,1)作为间接寻址,则可寻址片外256个单元片外数据存储器空间,8位地址和数据均由P0口输出,可选用其他任何出口线来输出高于8位地址(一般选用P2口输出高8位地址)INCDPTR;16位数增1指令。首先对低8位指针DPL内容执行加1操作,当产生溢出时,就对DPH的
12、内容进行加1操作,并不影响标志Cy的状态。MULAB;ABBADIVAB;A/BA(商),B(余数)AJMPaddr11;2KB范围内无条件跳转指令。LJMPaddr16;64KB程序存储器地址空间任何位置。JZrel;若累加器为0;则执行转移JNZrel;若累加器为非0;则执行转移CJNEA,direct,relCJNEA,direct,relCJNERn,#data,relCJNERi,#data,relDJNZRn,relDJNZdirect,rel;若结果不为0则转移JCrel;若进位为Cy=1;则转移JNCrel;若进位为Cy=0;则转移JBbit,rel;若直接寻址位=1;则转移J
13、NBbit,rel;若直接寻址进位=0;则转移JBCbit,rel;若直接寻址进位=1;则转移,并清0直接寻址位。CPL08H;/(21H).0(21H).0位SETBP1.7;1P1.7位RETI;本指令清除了中断响应时,被置1的MCS-51内部中断优先级寄存器的优先级状态。ORG2000HDB30H,40H,24,C,B汇编后:(2000H)=30H(2001H)=40H(2002H)=18H(十进制数24)(2003H)=43H(字符CASCII码)(2004H)=42HTESTEQU2000H;标号TEST等同于2000H./a.使10H单元中数的高3位清0,其余位不变参考答案ANL1
14、0H,1FHb.使20H单元中数的高2位清1,其余位不变参考答案ORL20H,C0Hc.使30H单元中数的高4位取反,其余位不变参考答案XRL30H,0FHd.使40H单元中数的所有位取反参考答案XRL40H,00He.使ACC.0、ACC.1置1参考答案SETBACC.0SETBACC.1f.使累加器A的高2位清0参考答案ANLA,3FH/TCONTF1TR1TF0TR0IE1IT1IE0IT088H位地址8FH-8DH-8BH8AH89H88HIT0选择外部中断请求0触发方式0电平触发1跳沿触发IE0外部中断请求0中断请求标志位TF0定时器/计数器T0溢出中断请求标志位TR0定时器/计数器
15、运行控制位0停止定时器/计数器运行1启动SCONSM0SM1SM2RENTB8RB8TIRI位地址9FH98H串行口4种工作方式SM0SM1方式功能说明000同步移位寄存器方式(用于扩展I/O口)0118位异步收发,波特率由定时器控制1029位异步收发,波特率fosc/64或fosc/321139位异步收发,波特率由定时器控制SM2-多机通信控制位方式0SM2必须为0,方式1若SM2=1则只有收到有效地停止位时才会激活RI方式2、3若SM2=1RB8=1将接收到的前8位数据送入SBUF,并置1RI,产生中断请求,RB8(第9位数据)=0将接收到的前8位数据丢弃。SM2=0,无论RB8多少,都将
16、前8位数据送入SBUF中,并置1RI,产生中断请求。REN-允许串行口接收位0允许1禁止TB8-发送第9位数据双机通信时,作为奇偶校验位多机通信时,1地址帧0数据帧RB8-接收到第9位数据TI-发送中断标志位RI-接收中断标志位TI,RI必须软件清0IEEAESET1EX1ET0EX0A8H位地址AFHEA-中断允许总控制位0,CPU屏蔽所有中断请求(CPU关中断)1,CPU开放所有中断ES-串行口中断允许位ET0定时器/计数器0溢出中断标志位EX0外部中断0请求标志位1允许0禁止中断IPPSPT1PX1PT0PX0B8HBCHPS-串行口中断优先级控制位PT0定时器T0中断优先级控制位PX0
17、外部中断0中断优先级控制位中断请求被响应的条件:1.CPU开中断,即IE寄存器中中断总允许位EA=12.该中断源发出中断请求,即中断源对应的中断请求标志为13.该中断源的中断允许位1,即该中断没有被屏蔽4.无同级或更高级中断正在被服务5.当前指令运行完毕6.IE返回再运行一条指令中断响应时间38个机器周期TMODGATEC/TM1M0GATEC/TM1M0|T1方式字段|T0方式字段|GATE-门控位0运行控制位TRX(X=0,1)来启动定时器/计数器运行1用外部中断引脚/INTX(X=0,1)高电平来启动定时器/计数器运行【一般用于测脉宽】M0、M1-工作方式选择位M0M1工作方式00方式0
18、,为13位定时器/计数器01方式1,为16位定时器/计数器10方式2,8位的常数自动重新装载的定时器/计数器11方式3,仅适用于T0,T0分成2个8位计数器,T1停止计数C/T-计数器模式和定时器模式选择位0定时器模式1计数器模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。/编制50ms延时程序。编程说明:设晶振的频率为12MHz,则一个机器周期为1s,执行一条DJNZ指令需2个机器周期,即2s。循环次数可通过计算获得,所以采用计数法,并选择先执行后判断的循环结构。DEL:MOVR7,#200;1sDEL1:MOVR6,#123NOPDEL2:DJNZR6
19、,DEL2;(2123+2)sDJNZR7,DEL1;(248+2)200+1s,即50.001msRET/单片机实现定时的方法:a.软件延时。b.不可编程的硬件定时。c.可编程定时器/计数器。/已知某单片机振荡fosc=12MHz,使用定时器产生周期为1ms的等宽方波,由P1.0引脚输出。要求:a.使用定时器1,以工作方式0,采用查询方式;b.使用定时器0,以工作方式1,采用中断方式。解:1.使用定时器1,工作方式0,查询方式。a.计算计数初值TH1,TL1;要产生1ms的等宽方波,只要使用P1.0引脚交替输出各为500s的高低电平即可。定时时间为500s,设计数初值为X,有下式可得;(21
20、3-X)12/(12106)=50010-6,解得:X=7692,转化为二进制为:00,将其低5位装入TL1,(TL1)=0CH;高8位装入TH1,(TL1)=0F0H。b.TMOD寄存器初始化:定时器1定时功能,C/T=0;无需控制,GATE=0;/INT0工作方式为方式0,M1M0;定时器0不用,有关位均设为0.因此TMOD寄存器的内容为00H。c.TR及IE的使用;因为采用查询方式,要关闭中断,IE为0.启动计数时,TR1要置1d.程序设计:MOVTMOD,#00H;设置T1为工作方式0MOVTH1,#0F0H;设置计数初值MOVTL1,#0CHMOVIE,#00H;禁止中断SETBTR
21、1;启动定时LOOP:JNBTF1,LOOP;查询计数溢出CPLP1.0;输出取反MOVTH1,#0F0H;重新设置计数初值MOVTL1,#0CHCLRTF1;清除计数溢出标志位AJMPLOOP/使用定时器0,工作方式1,中断方式。6MHz(2us)方式0最长可定时16.384ms;213*2us方式1最长可定时131.072ms;216*2us方式2最长可定时512us;28*2usA.计算计数初值(216-X)12/(12106)=50010-6X=216-500=10000H-1F4H=0FE0CH所以(TH0)=0FEH,(TL0)=0CH.b.TMOD寄存器初始化(TMOD)=01H
22、c.IE及TR的使用;中断方式,要使EA=1及ET0=1开放中断.由TR0=1启动定时.d.程序设计:主程序:MOVTMOD,#01H;定时器0工作方式1MOVTH0,#0FEH;设置计数初值MOVTL0,#0CHSETBEA;开放中断SETBET0;开放定时0中断SETBTR0;定时开始SJMP$;等待中断中断服务程序:ORG000BHCPLP1.0;输出取反MOVTH0,#0FEH;重新设置计数初值MOVTL1,#0CHRETI/使用定时器0以工作方式2,由P1.6输出周期为100s连续等宽方波,。已知晶振频率为12MHz.解:a.计算计数初值;等宽方波周期为100s,定时时间为50s,设
23、计数初值为X:(28-X)12/(12106)=5010-6X=28-50=100H-32H=0CEHb.程序设计:主程序:ORG1000HMAIN:MOVTMOD,#02H;定时器0工作方式2MOVTH0,#0CEH;设置计数初值MOVTL0,#0CEHSETBEA;开放中断SETBET0;开放定时0中断SETBTR0;定时开始SJMP$;等待中断中断服务子程序:ORG000BHCPLP1.6;输出取反RETI/PCONSMOD87HSMOD:波特率选择位。方式0,波特率固定为时钟频率fosc*(1/12),若fosc=12Hz,即1Mb/s.方式2,波特率=fosc*2SMOD/64,若f
24、osc=12Hz,SMOD=0波特率=187.5kb/s;SMOD=1,波特率=375kb/s.方式1或3;波特率=(2SMOD/32)*定时器T1溢出率若8031时钟振荡频率为11.0592MHz,选用T1方式2定时作为波特率发生器,波特率为2400b/s,求初值。设T1为方式2,定时,选SMOD=0.波特率=(2SMOD/32)*(fosc/(12*(256-X)=2400b/s解得:X=244=F4H./程序存储器扩展:线选法和译码法线选法:片选端/CE接(P2.6)P2.6引脚为0,其他引脚一定为高电平。译码法:74LS138(3线-8线)74LS139(双2线-4线)74LS154(
25、4线-16线)/扩展I/O工作状态选择表A1A2/RD/WR/CS工作状态00010A口数据数据总线(读端口A)01010B口数据数据总线(读端口A)10010C口数据数据总线(读端口A)00100总线数据A口(写端口A)01100总线数据B口(写端口B)10100总线数据C口(写端口C)11100总线数据控制字寄存器(写控制字)8255A3种基本工作方式:方式0:基本输入输出方式1:选通输入输出方式2:双向传送(仅A口有此方式)8255A工作方式0,且A口输入B、C口输出MOVA,#90H;A口方式0输入,B、C口输出的方式控制字MOVDPTR,#0FF7FH;控制寄存器地址DPTRMOVXDPTR,A;方式控制字控制寄存器MOVDPTR,#0FF7CH;A口地址DPTRMOVXA,DPTR;从A口读数据MOVDPTR,#0FF7DH;B口地址DPTRMOVA,#DATA1;要输出的数据DATA1AMOVXDPTR,A;将DATA1送B口输出MOVDPTR,#0FF7EH;C口地址DPTRMOVA,#DATA2;DATA2AMOVXDPTR,A;将DATA2送C口输出/按键的识别方法:1.扫描法2.线反转法键盘的工作方式:1.编程2.定时3.中断扫描方式专心-专注-专业
限制150内