下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、个人近期工作内容以及总结,单片机单片机个人知识点总结波特率公式:TH1=256-f/(波特率_12_32/2SMOD)MCS?51系列单片机内部有哪些主要的逻辑部件?答案:一个8位的CPU、一个布尔处理机、一个片内振荡器、128B的片内RAM、21个特殊功能寄存器、4个8位并行I/O接口、一个全双工的串行口、2个16位的定时器/计数器、5个中断源、2个中断优先级。机器周期是指:完成MCS-51一个典型的指令花费的振荡周期称为一个机器周期;一个机器周期由六个状态组成包含有12个振荡周期;当外部中断采用低电平触发方式时,为了避免在中断返回后再次响应该中断要求外部中断源在执行的中断程序返回前撤销中断
2、请求信号(使引脚电平变高);程序计数器PC是用来存放下一条将要执行的指令地址共16位。单片机上电复位后PC=0000H;当单片机的P1口做为一般的I/O口使用时为8位准双向口的意思是指:当输入信号时需先向P1口锁存器写1以保证读引脚的正确性;何谓堆栈?它设置在哪个存储区?在实际编程中它有何应用价值?答:堆栈是一个后进先出的特殊的数据缓冲区并由栈指针SP指示堆栈中的数据深度。在MCS-51系列单片机中堆栈设置在内部RAM数据存储区内。在实际编程中可用于数据的传递数据的交换、保存CPU现场等作用简述MCS?51单片机程序存储器的几个特殊入口地址的含义。0000H:复位入口地址0003H:外部中断0
3、中断服务程序入口地址000BH:定时器/计数器0溢出中断服务程序入口地址0013H:外部中断1中断服务程序入口地址001BH:定时器/计数器1溢出中断服务程序入口地址0023H:串行口中断服务程序入口地址何谓静态显示?何谓动态显示?两种显示方式有何优缺点?所谓静态显示是指当显示器显示某一个字符时相应的发光二极管恒定地导通或截止公共端接固定的电平。LED动态显示是将所有位的段选线并接在一个I/O接口上称为段口共阴极端或共阳极端分别由相应的I/O接口线控制称为位口。静态显示显示稳定但软件简单;动态显示硬件简单但软件需要不断地刷新。编程将片内RAM30H39H单元中的内容送到以3000H为首的存储区
4、中。MOVMOVMOVR0#30HDPTR,#3000HR7#10L1:MOVMOV_INCINCDJNZRETA,R0DPTR,AR0DPTRR7L1片内RAM60H开始存放20个数据试统计正数、负数及为零的数据个数并将结果分别存在50H、51H、52H单元中。MOV50H,#0MOV51H,#0MOV52H,#0MOVR7#20MOVR0#60HL3:MOVA,R0JZL1JBACC.7L2INC50HSJMPLENDL2:INC51HSJMPLENDL1:INC52HLEND:INCR0DJNZR7,L3RET从片外RAM2000H单元开始存有20个有符号数要求把它们传送到片外RAM30
5、00H开始的单元但负数不传送试编写程序。L1:L2:L3:MOVDPTR,#2000HMOVR0,#20HMOVR7,#20MOV_A,DPTRMOVR0,AINCDPTRINCR0DJNZR7,L1MOVDPTR,#3000HMOVR0,#20HMOVR7,#20MOVA,R0JBACC.7,L3MOV_DPTR,AINCDPTRINCR0DJNZR7,L2RET在片外RAM2000H、20_H和3000H、3001H中分别存放两个字数据(高8位在偶地址)试比较两个数的大小把大数存放在4000H、4001H单元中。MOVDPTR,#2000HL1:L2:MOV_MOVINCMOV_MOVMO
6、VMOV_MOVINCMOV_MOVCLRMOVSUBBMOVSUBBJNCMOVMOVSJMPMOVMOVMOVMOV_INCMOVMOV_RETA,DPTR20H,ADPTRA,DPTR21H,ADPTR,#3000HA,DPTR30H,ADPTRA,DPTR31H,ACA,21HA,31HA,20HA,30HL1A,20HB,21HL2A,30HB,31HDPTR,#4000HDPTR,ADPTRA,BDPTR,A试编写一段对中断系统初始化的程序允许外部中断0、外部中断1、定时器/计数器T0溢出中断、串行口中断且使定时器/计数器T0溢出中断为高优先级中断。SETBSETBSETBSETB
7、SETBSETBD7IE(A8H)EAD6_D5_EAE_0E_1ET0ESPT0D4ESD3ET1D2E_1D1ET0D0E_0IE名称:EA:中断允许总控制位;ES:串行口中断;ET1:定时器/计数器1中断;E_1:外部中断1中断;IP名称:PS:串行口中断;PT1:定时器/计数器1中断;P_1:外部中断1中断。设MCS?51单片机时钟为12MHz利用定时器T0编程令P1.0引脚输出2ms的矩形波程序要求占空系数为1:2(高电平时间短)。ORGLJMPORGLJMPORGMAIN:MOVMOVMOVMOVMOVSETBSETBSETBL1:SJMPT0INT:MOVMOVINCCJNECL
8、RSJMPLL1:CJNESETBMOVLLEND:RETI的最长定时时间。方式1:65536us;0000HMAIN000BHT0INT0030HSP#60HR7#0TMOD#01HTH0#0FDHTL0#66HEAET0TR0L1;中断服务程序TH0#0FDHTL0#66HR7R7#1LL1P1.0LLENDR7#3LLENDP1.0R7#00H;初始化;定时666微妙;重载初始值如果MCS?51单片机系统的晶振频率为12MHz分别指出定时器/计数器方式1和方式2方式2:256us设MCS?51单片机的晶振频率为12MHz要求在P1.0输出周期是200ms的方波试编写程序。ORG0000H
9、LJMPMAINORG001BHLJMPT1INTORG0030HMAIN:MOVSP,#70HMOVTMOD,#10HMOVTH1#3CHMOVTL1#0B0HMOVR7#2SETBEASETBET1SETBTR1SJMP$T1INT:MOVTH1#3CH;T1方式1;定时50ms;50ms_2=100msL1:MOVDJNZMOVCPLRETITL1#0B0HR7L1R7#2P1.0设串行异步通信的传送速率为2400波特传送的是带奇偶校验的ASCII码字符每个字符包含10位(1个起始位7个数据位1个奇偶校验位1个停止位)试编程初始化程序。设定串行口位方式1.MOVMOVMOVMOVMOVS
10、ETBSCON,#40HPCON,#80HTMOD,#20HTH1#0F4HTL1#0F4HTR1设外部晶频率振为11.0592MHz串行口工作在方式1波特率为4800b/s。编写用T1作为波特率发生器的方式字并计算T1的计数初值。TMOD:20HTH1=TL1=0FAH设计一个单片机的双机通信系统串行口工作在方式1编写通信程序将甲机内部RAM30H3FH存储区的数据块通过串行口传送到乙机内部RAM40H4FH存储区中。甲机发送(采用查询方式):MOVMOVMOVMOVLOOP:MOVMOVMOVMOVWAIT:JBCSJMPNE_T:INCDJNZRETSCON#80HPCON#00HR0#
11、30HR2#10HAR0CPTB8CSBUFATINE_TWAITR0R2LOOP;设置工作方式2;置SMOD=0波特率不加倍;数据区地址指针;数据长度;取发送数据;奇偶位送TB8;送串行口并开始发送数据;检测是否发送结束并清TI;修改发送数据地址指针乙机接收(采用查询方式):MOVMOVMOVMOVLOOP:JBCSCON#90HPCON#00HR0#40HR2#10HRIREAD;工作方式2并允许接收;置SMOD=0;置数据区地址指针;等待接收数据长度;等待接收数据并清RISJMPLOOPREAD:MOVASBUF;读一帧数据MOVC,PJNCLP0;C不为1转LP0JNBRB8ERR;R
12、B8=0即RB8不为P转ERRAJMPLP1LP0:JBRB8ERRLP1:MOVR0AINCR0DJNZR2LOOPRET在一个8031应用系统中扩展一片2764、一片8255A和一片6264。试画出系统框图并指出所扩展的各个芯片的地址范围。将图8-23中的/CE1接74LS138译码器的/Y0端。2764的地址空间范围:0000H1FFFH6464的地址空间范围:0000H1FFFH82552A的口地址:PA口:0FFFCH;PB口:0FFFDH;PC口:0FFFEH;控制口0FFFFH。单片机采用晶振6MHZP1口接有8个发光管围成圆形(跑马灯)。要求:发光管每次只亮一个一次从P1.0P
13、1.7循环发光切换时间为1秒(低电平亮);延时采用T0定时器工作于自动装入时间常数的定时器工作方式允许T0中断试写出完整的可调试程序。ORG0000HLJMPstartORG000BHLJMPtimer0ORG30Hstart:MOVTMOD#02H;T0工作于方式2自动重装载MOVTL0#06;定时器自动重装初值MOVTH0#06MOVR7#100MOVR6#20;R6、R7中断次数,一次中断500uS,即500_100_20=1sMOVA#0FEH;循环送出的控制字节MOVP1A;送出控制字节P1.0灯亮SETBTR0SETBET0SETBEAwait:SJMPwait;主程序无限循环ti
14、mer0:DJNZR7E_ITMOVR7#100DJNZR6E_ITMOVR6#20RLAMOVP1AE_IT:RETIEND;左循环一位一个单片机系统时钟频率fosc=11.059Mhz现要求串行口通信的波特率为9600bps采用T1作为波特率发生器试计算出定时器T1的自动重装载值、实际波特率并验算实际波特率与理论波特率的相对误差?取:SMOD=0;11.059?106256?3253FDH9600?321211.059?106演算:波特率959.8bps9321225625396009599.80.0018%误差计算:误差9600T1自动重装载值:N256?程序段:MOVMOVMOVSET
15、BTMOD#20HTH1,#0FDHTL1,#0FDHTR18255初始化:PORTAEQU(A口地址)PORTBEQU(B口地址)PORTCEQU(C口地址)CS8255EQU(/CS地址)ORG0000HMOVDPTR#CS8255MOVA,#10010000BMOV_DPTR,A编制一个计算符号函数y=SGN(x)的完整的可调试的程序。?1?当x0Y=0?当x01?当x0设自变量已经存入外部数据存储区的100h单元范围-128x127;y存入外部数据区的200h单元。答案:ORG0000HLJMPSTARTORG0030HSTART:MOVDPTR#100HMOV_ADPTR;JZSUL
16、JBACC.7NEGMOVA,#01SUL:MOVDPTR#200HMOV_DPTRARETNEG:MOVA#0FFHSJMPSULWAIT:LJMPWAITEND用一片2764和一片6264扩展8k的程序存储器(从2000H3FFFH)和8K的数据存储器(6000H7FFFH)不采用线译码试完成用8051与之连接的连接图。单片机总结【1、数据总线(DataBusDB):传送数据;双向;一般来说微处理器的位数和数据总线的位数一致。地址总线AddressBusAB):在计算机中通过地址来访问外设及存储器;单向;地址总线的数目决定了可以直接访问的内存储器的单元数目。控制总线(ControlBusC
17、B):传送CPU发出的控制信号也可以传送其他外设信号到微处理器;对于一条具体的控制线其方向是固定的;控制总线的数目与微处理器的位数没有直接关系一般受引脚的限制控制总线的数目不会太多。】【1)ROM:掩膜编程的ROM简称为ROM它的编程是由半导体制造厂家完成的适合于大批量生产的产品。2)PROM:在出厂时并未存储任何信息用户只能写入一次(编程一次)。(3)EPROM:可改写的现场编程ROM整片一起擦除能够重复编程;(EP:ErasableProgrammable)用电信号编程可用专门的编程器编程UVEPROM:用紫外线擦除的EPROM。EEPROM:用电信号进行内容擦除的EPROM】【.单片微型
18、机是由CPU存储器I/0接口三部分组成】【PU主要由运算器控制器组成CPU中的布尔处理器用来处理位操作】【零标志Z(ZeroFlag):当运算结果为零时Z标志就置1否则Z就被置零。两个数是否相等。符号标志S(SignFlag):符号标志总是和运算结果中最高一位的值一致。判断有符号数的正负。有符号数运算时才有意义奇偶标志P(ParltyF1ag):奇偶标志用来标记运算结果中1的个数的奇偶性可用于检查在数据传输中是否发生错误。有奇校验和偶校验之分】【单片机的特点:单片机的存贮器有片内存贮器和片外存贮器之分;单片机内的ROM和RAM严格分工;单片机有很强的位处理功能;单片机的引脚出线一般都是多功能的
19、;系列齐全功能扩展性强。】【半导体存储器从工艺上分为双极型和MOS型两种。双极型存储器的工作速度较快但集成度较差。MOS存储器的集成度较高价格便宜。现在一般用的半导体存储器都是MOS存储器。】【只读存贮器(ROM)的信息在制造时或通过一定的编程方法写入。在系统中通常只能读出不能写入;在断电时其信息不会丢失;它用来存放固定的程序及数据如监控程序、数据表格等。随机存取存储器(RAM)信息可读可写;可随时直接写入数据;掉电后信息丢失。RAM有双极型和MOS型两种MOS存储器因其集成度高功耗较低价格便宜而得到广泛应用。】【8位CPU4K字节在系统可编程Flash存储器程序存储器的寻址范围为64KB片外
20、数据存储器的寻址范围为64KB片内带振荡器振荡频率范围为1.212MHz;可有时钟输出128个字节的片内数据存储器21个字节专用寄存器32个可编程I/O口线2个16位定时器/计数器5个中断源两个优先级一个全双工UART串行通道可多机通信111条指令含乘法指令和除法指令有强位寻址、位处理能力片内采用单总线结构用单一的+5V电源。】【控制器是由指令寄存器IR、指令译码器ID、程序计数器PC、数据指针DPTR、堆栈指针SP、RAM地址寄存器、时钟发生器以及控制逻辑组成的】。【向上生长型堆栈出栈入栈的操作原则是“先进后出”或“后进先出”。入栈操作规则为:先SP中的内容加1后写入数据;出栈操作规则为:先
21、读出数据后SP中的内容减1。主要用于数据传送;子程序调用及返回和中断处理断点的保护及返回。】【8051内部有两个16位可编程定时计数器记为定时器To和T1。在定时工作时时钟由单片机内部提供即系统时钟经过12分频后作为定时器的时钟。计数工作作时两个计数器的时钟脉冲(计数脉冲)由T0和T1(即P34和P35)两个引脚输入。可以产生中断。】【8051的中断系统允许接受5个独立的中断源即两个外部中断申请两个定时计数器中断以及一个串行口中断。可以设置两个中断优先级即高优先级和低优先级由中断优先控制寄存器IP来控制】【物理上分为:4个空间即片内ROM、片外ROM片内RAM、片外RAM逻辑上分为:3个空间即
22、程序内存(片内、外)统一编址MOVC数据存储器(片内)MOV数据存储器(片外)MOV_】【0003H外部中断0入口000BHT0溢出中断入口0013H外中断1入口001BHT1溢出中断入口0023H串口中断入口】【00H7FH:是真正的RAM区可以读写各种数据;80HFFH:是专门用做特殊功能寄存器(SFR)的区域。】【位寻址区是对字节存储器的有效补充通过位寻址可以对各个位进行位操作可以用于开关量的控制。在程序设计阶段通常用于存放各种程序的运行标志、位变量等位寻址是51单片机特有的功能这种使用方式大大提高了存储器的工作效率。】【P0口是一个多功能的三态双向口能驱动8个LSTTL负载。作通用I/
23、O口输出时:是开漏输出应外接上拉电阻P1口是一个准双向口它只作通用的I/O口使用其功能与P0口作为通用I/O口时的功能相同。作为输出口使用时由于其内部有上拉电阻所以不需要外接上拉电阻;P1口能驱动4个TTL负载。P2口也是一个准双向口,P2口能带34个TTL负载。P3口是一个多功能准双向口第一功能是作为通用的I/O口使用其功能和原理与P1口相同。可以驱动4个TTL负载。第二功能是作为控制和特殊功能口使用可以字节访问也可以位访问】【1、P0口:地址低8位与数据线分时使用端口2、P1口:按位可编址的输入输出端口3、P2口:地址高8位输出口4、P3口:用第二功能。若不用第二功能也可作通用I/O口。】
24、【复位状态:1.程序计数器PC初始化为0000H使单片机从OOOOH单元开始执行程序。在运行中当单片机的程序受外界因素干扰陷入死循环或跑飞时为摆脱困境可将单片机复位重新启动。2.复位也可使单片机退出低功耗工作方式而进入正常工作状态。】【掉电保护方式:其保护措施是:单片机系统在运行中突然掉电故障时先保存重要的数据然后启用备用电源维持供电。】【80C51单片机有两种功耗节电方式:空闲方式和掉电方式。空闲方式和掉电方式都是由特殊功能寄存器中的电源控制寄存器PCON的有关控制位来控制的。】【空闲方式的退出可采用两种方式:中断方式和硬件复位方式。退出掉电方式的惟一方法是硬件复位】【51单片机的时序单位共
25、4个从小到大依次是:节拍、状态、机器周期和指令周期。一个状态包括两个节拍一个节拍的宽度实际上就等于一个振荡周期一个机器周期由6个状态周期组成。振荡周期Tosc=1/fosc一个机器周期=12个振荡周期=12×1/fosc。例如:若fosc=12MHz则一个机器周期=1s。】【51单片机有111条指令概括为以下几种:单字节单机器周期指令、单字节双机器周期指令、双字节单机器周期指令和双字节双机器周期指令三字节指令都是双机器周期指令而单字节乘除指令均为四机器周期指令。】【单片机与外部器件数据交换遵循原则:一是:地址唯一性一个单元一个地址。二是:同一时刻CPU只能访问一个地址即只能与一个单元
26、交换数据。不交换时外部器件处于锁闭状态对总线呈浮空状态。】【指令通常由两部分构成即操作码和操作数】【5大类111条。数据传送指令28条算术运算指令24条逻辑运算及移位指令25条控制转移指令17条位操作(布尔操作)指令17条单字节:49条双字节:45条三字节:17条】【立即寻址寄存器寻址直接寻址寄存器间接寻址变址寻址(基址寄存器偏移量寄存器)相对寻址位寻址】【立即数。例如:MOVA#3AH;A3AHMOVDPTR#8000H。寄存器寻址例如MOVAR0;(A)(R0)直接寻址例如:MOVA3AH;A(3AH)寄存器间接寻址例如:MOVAR0;A(R0)变址寻址例如:MOVCAA+PC;(A)+(
27、PC)AMOVCAA+DPTR;(A)+(DPTR)APUSHdirect(1)SPSP+1(2)(SP)(direct)POPdirect自动进行两步操作:(1)(direct)(SP)1、试编写一程序段实现将外RAM0FAH单元中的内(2)SPSP-1】【编程题:例容传送到外RAM04FFH单元中。?解:MOVDPTR#04FFHMOVR0#0FAH2MOV_AR0MOV_DPTR,A】【例、设(A)=一个BCD码常数试用查表法获得其相应的ASCII码。?MOVDPTR#TABMOVCA.A+DPTRTAB:DB30HDB31HDB32H33H34H35H】【16位数的算术左移16位数在内
28、存中存放在M1和M1+1单元低8位先存。?CLRCMOVR1#M1MOVAR1RLCAMOVR1AINCR1MOVAR1RLCAMOVR1A】【例:将片内数存30H39H单元清零。?MOVR0,#30HCLRAMOVR7,#10LOOP:MOVR0AINCR0DJNZR7,LOOPSJMP$】【16位数的一次循环移位16位数在内存中存放在M1和M1+1单元低8位先存。?MOVAM1+1;高8位送AMOVC,ACC.7;最高位送进位CyMOVR1#M1;操作数地址送R1MOVAR1;低8位送ARLCA;低8位左移最低位添0CyAMOVR1A;送回INCR1;指向高8位MOVAR1;高8位送ARL
29、CA;A7移入高8位左移MOVR1A;送回】【将单字节压缩BCD码(存于数据内存30H单元)分离转换成ASCII码放在31H、32H单元。?MOV30H,#68HMOVA,30H;用除法分离MOVB,#10HDIVAB;商6在A余数8在B中MOV31H,B;转换成分离的BCDMOV32H,AORL31H,#30H;存结果ORL32H,#30H】【将8位二进制数(存于数据内存30H单元)转换成三位分离的BCD码放在31H、32H、33H单元?MOVA,30H;用除法分离MOVB,#10DIVAB;商25在A余数4个位在B中MOV31H,BMOVB,#10DIVAB;商2百位在A余数5十位在B中M
30、OV32H,B;存结果MOV33H,A】【将三位分离的BCD码放在31H、32H、33H单元转换成8位二进制数(存于数据内存30H单元)?。MOVA,33H;MOVB,#10MULAB;积BA最大20即33H中存的数不能超过2ADDA,32H;百位乘以10加十位在A中MOVB,#10MULAB;再乘以10ADDA,31H;存结果MOV30H,A【(30H)=_7_6_5_4_3_2_1_0(3lH)=Y7Y6Y5Y4Y3Y2Y1Y0(40H)=Y2Y1Y0_4_3_2_1_0?ORG0100HMOVA30HANLA#00011111BMOV30HAMOVA31HANLA#00000111BSW
31、APARLAORLA30H;组装MOV40HAEND】【将内部RAM中20H单元和30H单元的无符号数相加结果存入R0(高位)和R1(低位)中。?ORG0000HLJMPMAINORG0030HMAIN:MOVA,20HCLRCADDA,30HMOVR1,ACLRAADDCA,#00MOVR0,ASJMP$END】a-b(a0)【Y=a+b(a<0)ORG0030HBR:JBACC.7ADD1CLRC;计算分支a-bSUBBABSJMPDONEADD1:ADDAB;计算分支a+bDONE:MOVR2,A;存结果SJMPEND】【如果累加器A的D1D0位都为0则R2加1否则R3减1
32、试编写程序。A=D7D6D5D4D3D200?解:根据A和00000011B逻辑“与”的结果来判定。ORG0030HMOVBA;保存AANLA#00000011BJNZR3DEC1INCR2SJMPDONER3DEC1:DECR3;计算分支DONE:MOVAB;恢复ASJMP$END】【根据R7的值转移到不同的分支中的1个。例中R7=03.?ORG0000MOVA,R7RLAADDA,R7MOVDPTR,#TABJMPA+DPTRTAB:LJMPL0LJMPL1LJMPL2LJMPL3L0:INCR0JMPTOENDL1:INCR1JMPTOENDL2:INCR2JMPTOENDL3:INCR
33、3TOEND:SJMP$END】【内部数据区清零?ORG0030HZero:movR0,#30HmovR7,#10movA,#00HLoop:movR0,AincR0djnzR7,Loopsjmp$END】【n个单字节数相加和为双字节。单字节数据存在40H开始的RAM单元中n放在R2中和存在R3R4中?ORG0030HADD1:MOVR3,#00HMOVR4,#00HMOVR2,#nMOVR0,#40HLOOP:MOVA,R3;取和的低位ADDA,R0;相加MOVR3,ACLRAADDCA,R4;低位字节向高位字节进位MOVR4,AINCR0;地址加1DJNZR2,LOOP;未加完继续重复SJ
34、MP$END】n个单字节数相加和为双字节。单字节数据存在40H开始的RAM单元中n放在R2中和存在R3R4中?ORG0030HADD1:MOVR3,#00HMOVR4,#00HMOVR2,#nMOVR0,#40HLOOP:MOVA,R3ADDA,R0MOVR3,ACLRAADDCA,R4MOVR4,AINCR0DJNZR2,LOOPSJMP$END把内部RAM中起始地址为BLK1的数据块传送到外部RAM以BLK2为起始地址的区域直到遇到“#”字符的ASC码为止。去掉块长度ORG0030HBLK1EQU30HBLK2EQU1000HMOVSP,#6FHMOVR0#BLK1MOVDPTR#BLK2
35、_H:MOVAR0PUSHACCCLRCSUBBA#23HJZSTOPPOPACCMOV_DPTRAINCR0INCDPTRAJMP_HSTOP:SJMP$END比较有符号数的大小30h31h大的存入32hORG0030HOnedata30hTwodata31hMaxdata32hmovsp,#50hclrcmovA,onesubbA,twolcallxor_sofjbF0,Next;比较F0movmax,onesjmpdonenext:movmax,twodone:sjmp$xor_sof:movc,ovmov20h.7,cxrlA,20hmovc,acc.7movF0,cretEND50m
36、s延时程序Delay:movR7,#20_USDel1:movR6,#1231USNop1USDel2:djnzR6,Del22USdjnzR7,Del12USsjmp$T=200×(1+1+123×2+2)+1×1us=50001us=50ms统计从32H单元开始的14个存储单元有多少的数与30h单元的数相同统计结果存31h单元。ORG0030HMOV31h,#00MOVR2,#14MOVR0,#32HLOOP:MOVA,R0CJNEA,30H,NextINC31HNext:INCR0DJNZR2,LOOPsjmp$ENDP1.1P2.2TF0IE125H(位)
37、26H(位)1&&P1.311START:MOVC,P2.2ORLC,TF0ANLC,P1.1MOVF0,CMOVC,IE1ORLC,/25HANLC,F0ANLC,/26HMOVP1.3,CSJMP$16位二进制数存于M1和M1+1单元低8位先存编写完成一次循环移位程序MOVA,M1+1MOVC,ACC.7MOVR1#M1MOVA,R1RLCAMOVR1AINCR1MOVA,R1RLCAMOVR1,A将内部RAM中M1M2M3三个单元中无符号数相加和存入R0(高位)R1(低位)寄存器MOVR2#00HMOVA,M1ADDA,M2MOVR1AMOVA,R2ADDCA,R2MOV
38、R0AMOVA,R1ADDA,M3MOVR1AMOVA,R0ADDCA,R2MOVR0A在M1和M1+1单元有2个BCD数现将它们合并放到M1单元以节省内存空间MOVR1#M1MOVA,R1SWAPAJNCR1ORLA,R1MOVM1A2个无符号16位数分别存放在从M1和M2开始的数据区中低8位先存高8位在后写出2个16位数加法程序和存于R3(高8位)R4(低8位)和不超过16位MOVR0#M1MOVR1#M2MOVA,R0ADDA,R1MOVR4AINCR0INCR1MOVA,R0ADDCA,R1MOVR3,AM1,M2,M3分别为被减数减数和差的符号地址试编写2位BCD码的减法程序CLRC
39、MOVA,#9AHSUBBA,M2ADDA,M1DAA;十进制调整MOVM3ACLRC16位数的算术左移16位数在内存中存放在M1和M1+1单元低8位先存CLRCMOVR1#M1MOVA,R1RLCAMOVR1AINCR1MOVA,R1RLCAMOVR1A1将DPTR的内容循环左移4位PUSHACCPUSH0MOVR0#4AGAIN:MOVA,DPHMOVC,ACC.7MOVA,DPLRLCAMOVDPL,AMOVA,DPHRLCAMOVDPH,ADJNZR0AGAINPOP0POPACC3344H_56H=?ORG3000HMOVA,#44HMOBB,#56HMULABMOV30H,A;A=
40、4456L=(30H)MOV31H,B;B=4456H=(31H)MOVA,#33HMOVB,#56HMULAB;A=3356LADDA,31H;4456H+3356L=(31H)MOV31H,ACLRAADDCA,B;B=3356H+CYMOV32H,ASJMP$END将外部存储器的一个数据块传送到内部数据RAM2着的首地址分别为DATA1和DATA2遇到传送数据为0时停止传送MOVR0#DARA1MOVR1#DATA2LOOP:MOV_A,R0HERE:JZHEREMOVR1AINCR0INCR1SJMPLOOP将内部RAM中从data单元开始的10个无符号数相加相加结果送给sum单元。相
41、加结果不超过8位二进制数MOVR0#0AHMOVR1#DATACLRALOOP:ADDA,R1INCR1DJNZR0LOOPMOVSUM,ASJMP$(1)A=10(2)A10(3)A<=10(4)A<10(1)CLRCCJNEA,#10LOOPSJMPLABELLOOP:JNCLABELSJMP$(2)CJNEA,#10,LOOPSJMP$LOOP:JNCLABELSJMP$(3)CJNEA,#10,LOOPSJMPLABELLOOP:JCLABELSJMP$(4)CJNEA,#10,LOOPSJMP$LOOP:JCLABELSJMP$用软件定时方式可以通过调用2
42、0ms延时子程序来实现START:SETBP1.0LCALLDELAY20CPLP1.0LCALLDELAY20LCALLDELAY20SJMPSTARTDELAY20:CPLRS1MOVR6#20LOOP1:MOVR7#249LOOP2:MOPNOPDJNZR7LOOP2DJNZR6LOOP1CPLRS1RET多字节左移1位ORG2000HMAIN:MOVSP,#5FHMOVR0,#30HMOVR2,#3ACALLB3LSJMP$B3L:CLRCLOOP:MOVA,R0RLCAMOVR0,AINCR0DJNZR2,LOOPRETEND编写程序查找内部RAM的20h50h单元中是否有OAAH这
43、一数据若有则将51H单元设为01h若未找到则使51H设置0MOVR0#31HMOVR1#20HLOOP:MOVA,R1CLRCCJNEA,#0AAH,LOOP1SJMPLOOP2LOOP1:INCR1DJNZR0LOOPMOVA#00HSJMPLOOP3LOOP2:MOVA,#01HLOOP3:MOV51H,ASJMP$编写一子程序从串口行接受一个字符START:MOVTMOD,#20HMOVTH1#0E8HMOVTL1#0E8HSETBTR1MOVSCON,#50HL1:JNBRI,L1CLRRIMOVA,SBUFRET用位操作指令实现下面逻辑方程P1.2=ACC.1?P1.4?PSW.1+
44、20H?21HORG0000HSETBCANLC,ACC.1ANLC,P1.4ANLCPSW.1MOVP1.2CSETBCANLC,20HANLC,21HORLC,P1.2MOVP1.2C用位操作指令实现下面逻辑方程PSW.1=PSW.2+20H+P3.3)?ACC.3+P1.2?P2.1ORG0000HCLRCORLC,PSW.2ORLC,20HORLC,P3.3ANLC,ACC.3MOVPSW.2CSETBCANLC,P1.2ANLC,P2.1ORLC,PSW.1END是编写程序完成2个16位数减法7F4DH-2B4EH,结果存入内部RAM的30h和31h单元31h单元存差的高8位30h存
45、低8位ORG0000HCLRCMOVA,#4DHSUBBA,#4EHMOV30H,AMOVA,#7FHSUBBA,#2BHMOV31H,AEND编写程序将R1的低4位于R2的高4位合并存放R1中ORG0000HMOVA,R1ANLA,#OFHMOVR1AMOVA,R2ANLA,#0F0HADDA,R1MOVR1AEND若规定外部中断0为电平方式高优先级试写出有关的初始化程序SETBEASETBE_0;外部中断0开中断SETBP_0;外部中断0高优先级CLRIT0;电平触发#include<reg51.hunsignedcharpulse_number=0;/_中断服务程序_/vo
46、idint1_int(void)interrupt2P0=(pulse_number+);/_加一送P0显示_/_主程序_/voidmain(void)EA=1;/_开总中断_/E_1=1;/_使能INT1_/IT1=1;/_INT1下降沿触发_/while(1);/_死循环_/EA中断允许的总控制位IE.7E_0外部中断0(INT0)允许控制位IE.0E_1外部中断1(INT1)允许控制位IE.2ET0定时计数器0(T0)允许控制位IE.1ET1定时计数器1(T1)允许控制位IE.3ES串行口(RI/TI)允许控制位IE.4设计一个程序实时显示INT0引脚上出现的负跳变信号的累计数ORG00
47、00HAJMPMAINORG0003HAJMPIP0ORG0030HMAIN:MOVSP,#60HSETBIT0SETBEASETBE_0MOVR7,#00HLP:ACALLDISPAJMPLPORG0800HIP0:INCR7RETIIE0:外中断0(TCON.1)IE1:外中断1(TCON.3)TF0:定时计数器(TCON.5)TF1:定时计数器(TCON.7)申请标志位申请标志位T0溢出标志位T1溢出标志位PS串行口中断优先级控制位PT1定时器/计数器T1中断优先级控制位P_1外部中断1中断优先级控制位PT0定时器/计数器T0中断优先级控制位P_0外部中断0中断优先级控制位若某控制位为1
48、则相应的中断源规定为高级中断;反之为0则相应的中断源规定为低级中断【I/O接口电路的主要作用:1、信息传输功能2、速度匹配3、信号转换(电平、格式)】【I/O端口单独编址:优点:I/O端口的地址空间独立;控制和地址译码电路相对简单;专门的I/O指令使程序清晰易读。缺点:I/O指令没有存储器指令丰富;需要增加I/O读和I/O写的控制信号引脚。】【I/O端口与存储器统一编址:优点:不需要专门的I/O指令I/O数据存取与存储器数据存取一样灵活缺点:I/O端口要占去部分存储器地址空间程序不易阅读(不易分清访存和访问外设)】【I/O传送方式:无条件传送查询式传送中断传送方式直接存储器存取方式。】【中断:
49、计算机系统根据需要可以中断正常的工作程序改去处理外部需要处理的事件。当外部事件处理完后再回到正常的工作程序中。】【系统中应有一个专门的控制器来负责“外设和内存”“外设和外设”之间的数据传递。这种控制器称为DMA控制器】【中断处理与子程序调用的区别:调用哪个子程序、完成什么任务是用户设计程序时事先安排好的是采用子程序调用指令实现的;而中断事件发生是随机的哪个事件发生、何时调用中断处理程序是事先无法确定的在程序中无法事先安排调用指令调用中断处理程序的过程是由硬件自动完成的。】【中断系统应具有如下功能:1)实现中断与返回2)能实现优先权排队3)高级中断能中断低级中断优点:实现高速CPU与慢速外设之间
50、的配合;实现实时处理;实现故障的紧急处理;便于人机联系。】【中断优先级的一般处理原则如下:不同优先级的中断同时申请先高后低(很难遇到)相同优先级的中断同时申请按序执行(很难遇到正处理低优先级中断又接到高级别中断高打断低正处理高优先级中断又接到低级别中断高不理低、】【MCS-51中断系统中的特殊功能寄存器SFR。定时器控制寄存器TCON中断允许寄存器IE中断优先级寄存器IP串行口控制寄存器SCON】【中断入口地址:外中断0(INT0):0003H定时器0(T0):000BH外中断1(INT1):0013H定时器1(T1):001BH串行口(RI/TI):0023H】【中断允许控制寄存器IE0A8
51、HEA中断允许的总控制位IE.7E_0外部中断0(INT0)允许控制位IE.0E_1外部中断1(INT1)允许控制位IE.2ET0定时计数器0(T0)允许控制位IE.1ET1定时计数器1(T1)允许控制位IE.3ES串行口(RI/TI)允许控制位IE.4】【定时器控制寄存器TCON88HIT1=0时为电平触发方式低电平有效IT1=1时为边沿触发方式下降沿有效】【中断优先权:INT0T0INT1T1串行口】【外部中断响应时间:最短需要三个周期最长需8个机器周期】【并行接口特点:传输速度快;硬件开销大;只适合近距离传输。一个并行接口中包括状态信息、控制信息和数据信息】P1P3口不需要上拉电阻P1口
52、控制8只LED从左到右依次点亮再从右到左依次点亮start:MOVA,#0FFH;CLRC;MOVR2,#08h;循环八次。loop1:RLCA;带进位左移。MOVP1,A;输出到P1口。CALLdelay;延时一段时间DJNZR2,LOOP1;反复循环MOVR2,#07h;再往回循环。loop2:RRCA;带进位右移MOVP1,A;输出到P1口。CALLdelay;延时一段时间DJNZR2,loop2;反复循环LJMPstart;重新开始延时子程序delay:MOVr3,#20d1:MOVR4,#20d2:MOVR5,#248DJNZR5,$DJNZR4,d2DJNZR3,d1RETEND设
53、将上图74LS373中数据送入8031片内数据存储器中首地址为50H的数据区。写出相应中断系统初始化及中断服务程序PINT:SETBIT0;/INT0选为下降沿触发方式SETBEA;CPU开中断MOVR0#50H;置数据区首址SETBE_0;/INT0中断允许ORG0003HPINT0:AJMPINT0ORG1000HINT0:MOVDPTR#0BFFFHMOV_ADPTRMOVR0,AINCR0RETI【扩展I/O接口电路的功能1、速度协调2、输出数据锁存3、输入数据三态缓冲4、数据转换】【方式0:基本输入输出方式方式1:选通输入输出方式方式2:双向选通传送方式】t100ms/(N-1)【如
54、何消除按键的抖动(硬件法、软件法)检测到有键按下键对应的行线为低软件延时10ms后行线如仍为低则确认该行有键按下。当键松开时行线变高软件延时10ms后行线仍为高说明按键已松开。】【识别键盘有无键被按下的方法分两步进行:第1步:识别键盘有无键按下;第2步:如有键被按下识别出具体的按键】【b.线反转法第1步:列线输出为全低电平则行线中电平由高变低的所在行为按键所在行。第2步:行线输出为全低电平则列线中电平由高变低所在列为按键所在列。】【2.定时扫描工作方式:利用单片机内的定时器产生10ms的定时中断对键盘进行扫描。中断工作方式:只有在键盘有键按下时才执行键盘扫描程序如无键按下单片机将不理睬键盘。】
55、【键盘所做的工作可分为三个层次第1层:单片机如何来监视键盘的输入。三种工作方式:编程扫描定时扫描中断扫描。第2层:确定具体按键的键号。体现在按键的识别方法上就是:扫描法;线反转法。第3层:执行键处理程序。】【定时的主要作用是产生各种时标间隔。】【计数原理每输入一个脉冲计数器加1当加到计数器各位都为1时再输入一个脉冲计数器各位全变为0溢出中断标志置1从而向CPU申请中断。由预置计数值就可以算出从加1计数器启动到计满溢出所需的时间即定时时间。】【定时时间T=(216_)_TT:输入脉冲周期T=12/fs(f为晶振频率1.212MHz)如为12MHz则T1?s_:计数器初值(由程序输入)系统时钟频率
56、为12MHz要产生1ms定时求初值_T=12/12=1?s若为16位计数器_=2161000/1=64536=0FC18H若为13位计数器_=2131000/1=81921000=7192=1C18H不能采用8位计数器】【T/C的特殊功能寄存器SFR、16位定时/计数器0:核心的计数单元由两个特殊功能寄存器TH0和TL0组成、16位定时/计数器1:核心的计数单元由两个特殊功能寄存器TH1和TL1组成定时器方式选择寄存器:TMOD定时器控制寄存器:TCON13位定时器(TH的8位和TL的低5位】)【定时器方式选择寄存器:TMODGATE=0启动不受/INT0或/INT1的控制;GATE=1启动受
57、/INT0或/INT1的控制。C/T外部计数器/内部定时器方式选择位C/T=0定时方式;C/T=1计数方式。】:【编制初始化程序1)写TMOD;2)确定IE、IP;3)写计数初值;4)启动计数(TRi】【扩展A/D和D/A接口是为了进行模拟量与数字量之间的转换。】【D/A转换的技术指标1、分辨率2、精度3、偏移误差4、线性度5、转换速度】【DAC0832数模转换器主要特性1)输出电流线性度可在满量程下调节。2)转换时间为1s。3)由输入寄存器和DAC寄存器构成两级数据输入锁存。使用时数据输入可以采用两级锁存形式或单级锁存形式或直接输入形式。4)每次输入数字为8位二进制数。5)低功耗20mW。6
58、)逻辑电平输入与TTL兼容。7)供电电源为单一电源可在515V内8)基准电压的范围为±10V;】【所谓双缓冲方式就是把DAC0832的两个锁存器都接成受控锁存方式。为了实现寄存器的可控应当给寄存器分配一个地址以便能按地址进行操作。】【A/D转换器的主要技术指标1、分辨率:用数字量的位数来表示位数越高分辨率越高对输入量的变化越灵敏。2、量程:所能转换的电压范围。3、精度:分绝对精度和相对精度。与分辨率不同。4、转换时间:】【并行通信:数据的各位同时传送;串行通信:数据一位一位顺序传送。并行通信:8位数据在1个时钟作用下同时送出优点:方法简单、速度快缺点:费用高、只适合短距离串行同步通信:通信双方由同一时钟经同步字符引导后8位数据分别在8个时钟作用下逐位送出。与串行异步通信相比较优点:方法简单、速度略快缺点:需要同一时钟串行异步通信:通信双方约定按帧传送数据需要10个以上的时钟作用下才能将8位数据送出。与串行同步通信比较优点:无需同一时钟缺点:方法复杂、速度略慢比较结果:串行异步通信更优】【1)方式1发送:当执行一条写入SBUF的指令时就启动了串行接口的发送过程。在发送时钟脉冲的作用下从T_D引脚先送出起始位(0)然后是8位数据位最后是停止位(1)。一帧数据发送完后自动将TI置1向CPU申请中断。若要再发送下一帧数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度社保工伤保险合同范本(含企业员工福利政策)3篇
- 二零二五年度企业人才招聘与培养合同3篇
- 二零二五年度国际知识产权授权合同与实施标准3篇
- 2025年度数据安全防护与应急预案制定合同3篇
- 苏州校本课程设计
- 二零二五年度幼儿园教育设施建设与房地产开发合同3篇
- 海南职业技术学院《全科医学概论A》2023-2024学年第一学期期末试卷
- 旋转洗瓶机课程设计
- 海南卫生健康职业学院《智能交通系统》2023-2024学年第一学期期末试卷
- 海南外国语职业学院《食品工厂机械与设备A》2023-2024学年第一学期期末试卷
- 二年级乘除法口算题计算练习大全2000题(可直接打印)
- 2024陕西省渭南市镇事业单位招聘175人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- DB29-238-2024 城市综合管廊工程设计规范
- 宋代茶文化课件
- GB/T 43836-2024企业科技创新系统能力水平评价规范
- 高考英语必背688个高频词汇
- 《隐私计算金融应用白皮书(2022)》
- 建筑工程招标方案
- 2024年中职《餐饮服务与管理》职教高考必备考试题库(含答案)
- 足球教练员培训课件
- 招商岗位转正述职报告
评论
0/150
提交评论