单片机接口及其技术复习要点

更新时间:2023-10-04 06:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1什么是单片机!在一块集成电路芯片上集成微处理器、存储器I/O接口电路,从而构成了单芯片微型计算机。其特点是:体积小、控制功能强,性价比高,其非凡的嵌入式应用形态对于满足应用式需求具有独特的优势.

280C51单片机的基本结构,包括CPU系统(1 8位CPU,含布尔处理器2 时钟电路3 总线控制)、存储器系统(1 4k字节的数据存储器(ROM/EPROM/Fash、可外扩至64k)2 128字节的数据存储器(RAM, 可外扩至64k),3特殊功能寄存器SPR) I/O口等和其他功能单元(四个并行I/O口,2两个十六位定时/计数器。3一个全双工异步并行口(UART),4中断系统(五个中断源,两个优先级)).

3 80C51单片机的复位操作及其复位后的状态 复位是使单片机或系统中的其他部件处于某种确定的初始状态,其工作就是从复位开始的。复位操作有两种基本形式一是上电位,要求接通电源后单片机自动实现复位操作。二是上电与按键均有效的复位。实际应用中如果在单片机断电后,有可能在较短的时间内再次充电可以在R1上并接一个二极管,可以有效地提高此种情况下复位的可靠性。单片机复位后的状态 单片机的复位操作时单片机进入初始化状态。初始化后,程序计数器PC=0000H,所以程序从0000h地质单元开始执行。单片机启动后,片内的ram为随机值运行中的复位操作不改变ram的内容。复位后寄存器的状态时确定的p0-P3=FFH,SP为07h,sbuf 不定,ip ie 和pcon的有效值为0,其余的特殊功能寄存器状态均为00h。 PC = 0000H RAM:随机值(运行中复位不改变RAM内容) SFR: P0~P3=FFH SP=07H IP、IE和PCON:有效位为0 PSW=00H(状态确定) 相应的意义:P0~P3=FFH,相当于各口锁存器已写入1,此时不但可以使出,也可以输入。SP=07F堆栈指针指向片内RAM的07H单元(入栈的内容将写入08H单元)IP、IE和PCON的有效位为0,个中断源处于低优先级且均被关断、串行通信的波特率不加倍。PSW=00H,当前工作寄存器为零组。 4 80C51单片机的数据存储器配置,包括工作寄存器 区、位寻址区等。80C51单片机的数据存储器也分为片内、外两部分。对于基本型的单片机,共有片内ram128字节,分为工作寄存器区、位寻址区、通用RAM区三部分,寻址范围为00H-7FH。对于增强型的单片机,共有256字节,低128字节地址范围00H-7FH与基本型相同。对于高128字节80H-FFH只能采取间接寻址方式访问(旨在与SFR的访问相区别)。片外RAM地址空间为64KB,地址范围0000H-FFFFH。访问片外RAM时采用专门的指令MOVX实现,这时读/RD或写/WR信号有效;访问片内RAM时使用MOV指令,无读写信号产生。工作寄存器区(含寄存器组0~3)寄存器组0:地址00H~07H寄存器组1:地址08H~0FH寄存器组2:地址10H~17H寄存器组3:地址18H~1FH。工作寄存器组共32个字节,分四个工作寄存器组,每组占8个单元,分别称为:R0、R1?R7。当前工作寄存器组的选择由特殊功能寄存器中的程序状态寄存器psw的rsi、rso来决定。位寻址区片内RAM位寻址区共16个字节,人们常将程序状态寄存器标志、位控制变量设在位寻址区内。对于该区未用到的单元也可以作为通用RAM使用。通用RAM区 30H~7FH,共80字节 数据缓冲 堆栈 SP指示栈顶 复位时SP=07H 系统初始化通常重新设置,RAM内容查看 MAIN:MOV R7,#16 MOV A,#00H MOV R0,#30H LOOP:MOV @R0,A INC R0 INC A DJNZ R7,LOOP SJMP $ END

5 80C51单片机的时钟,包括其产生、表现。产生:一是内部时钟方式 二是外部时钟方式。表现。外部 只要在单片机的XTAL1和XTAL2引脚外接晶振即可。晶振CYS的晶振频率要小于12MHz,典型值为6MHz12MHz或11.0592MHz。80C51的单片机时钟信号 1个机器周期:12个晶荡周期(或6个时钟周期)。指令的执行时间称作指令周期 (单、双、四周期)晶振信号经分频后形成两个错开的信号P1和P2. P1和P2的周期也称为S中状态,它是周期的2倍,及一个S状态包含两个晶振周期。晶振信号12分频后形成机器周期,即一个机器周期包含12个晶荡周期。指令的执行时间称作指令周期。

6 80C51单片机的中断源、中断优先级以及中断允许与 优先级控制。单片机的中断源:计算机具有实时处理的能力能对外界发生的事件进行及时的处理需要靠计算机的中断系统来实现。中断的处理过程描述为!CPU在处理某一事件A时,发生了另一事件B请

求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理(中断服务)完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。能够向CPU发出中断申请的部件称为中断源。中断允许控制:cpu对中断系统所有中断以及某个中断源的开放和屏蔽是由允许寄存器ie控制的。Ie的状态可通过程序由软件设定。中断优先级控制:80c51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的优先级都是由中断优先级寄存器ip中的相应位来规定的。80C51单片机的中断优先级有三条原则:?CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。?正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。?正在进行的低优先级中断服务,能被高优先级中断请求所中断。为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器,其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。中断响应的条件:? 无同级或高级中断正在服务? 有中断请求信号? 相应的中断源已打开,即EA=1,中断源对应中断允许位也为1。? 当前的指令周期已经结束? 如果当前指令为RETI或访问IE和IP的指令,至少还要再执行完一条指令。中断响应时间:自中断源提出中断申请,到cpu响应中断,需要经历一定的时间,,如果中断响应过程受阻就要增加等待时间,。若同级或高级中断正在进行需要的附加时间取决于正在执行的终端服务程序的长短,等待的时间不确定;若没有同级或高级中断正在进行所需要的附加等待时间在三至五个机器周期。原因:若查询周期不是在执行的指令的最后机器周期附加等待时间不会超过三个机器周期,2 若查询机器周期恰逢reti或访问ip、Ie指令,而这类指令之后又跟着mul或div指令,则由此引起的附加等待时间不会超过五个机器周期。

中断响应过程:cpu中断响应过程如下:·将相应优先级状态触发器置1(以阻断后来的同级或低级的中断请求)执行硬件LCALL指令(pc入栈保护断点,将相应中断服务程序入口地址送pc)·执行中断服务程序。中断返回:中断服务的程序的最后一条指令必须是中断返回指令reti。Reti指令能使cpu结束中断服务的执行。其功能是 ·将断点地址从堆栈弹出送pc,cpu从原断点继续执行程序。·将相应优先级状态触发器清零,恢复原来工作状态。

7 80C51单片机的寻址方式。寻址方式有七种:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址,相对寻址和位寻址, 8 80C51单片机的数据传送指令,MOV、MOVC、MOVX、PUSH、POP等。数据传送是进行数据处理的最基本操作,这类指令一般不影响标志寄存器psw的状体。传送指令分两大类,一是采用mov操作符,为一般传送指令;二是采用非mov操作符,称为特殊传送指令。MOV、MOVC、MOVX、PUSH、POP等为特殊传送指令;读取rom中常数表的表项指令movc,读取片外ram及接口单元数据的指令movx,堆栈操作指令push和pop:堆栈是在内部ram、中按“先进先出”的规则组织的一片存储区,此区的一端固定,称为栈底,另一端是活动的称为栈顶,栈顶的位置由栈指针sp指示。。在80c51中,堆栈设置在片内低端的128个单元,且生长方向是向上的。

程序汇编的步骤:1. 分析问题——针对现有条件,明确程序设计时应该“做什么”2. 确定算法——解决“怎样做”的问题 3. 绘制程序流程图——用图形的方法描绘解决问题的思路 4. 分配内存单元——确定程序和数据区的起始地址 5. 编写源程序——用指令的形式将程

序流程图实现出来6. 汇编——用开发机或仿真器将源程序转换成机器码,便于单片机识别7. 在线仿真调试——查错、改错,对程序进行优化。 程序编制的方法与技巧:尽量采用模块化程序设计方法;是把一个完整的程序分成若干个功能相对独立的、较小的程序模块,对各个程序模块分别进行设计、编制程序和调试,最后把各个调试好的程序模块装配起来进行联调,最终成为一个有实用价值的程序。模块化程序设计的优点是:对单个程序模块设计和调试比较方便、容易完成,一个模块可以被多个任务共用。尽量采用循环结构和子程序结构;采用循环结构和子程序结构,可以使程序的总容量减小,提高程序的效率,节省内存。尽量少用无条件转移指令;少用无条件转移指令,可以保证程序的条理更加清晰,从而减少错误发生。充分利用累加器;累加器是主程序和子程序之间信息传递的桥梁,利用累加器传递入口参数或返回参数比较方便。这时,一般不要把累加器内容压入堆栈。对于通用子程序要保护现场;由于子程序的通用性,除了保护子程序入口参数的寄存器内容外,还要对子程序中用到的其它寄存器内容一并入栈保护。对于中断处理,还要保护程序状态字在中断处理程序中,既要保护处理程序中用到的寄存器内容,还要保护程序状态字PSW。否则,当中断服务程序执行结束返回主程序时,整个程序的执行可能会被打乱。汇编语言的语句格式:80C51单片机汇编语言的语句行由4个字段组成,汇编程序能对这种格式正确地进行识别。这4个字段的格式为:[标号:] 操作码[操作数] [;注释]括号内的部分可根据实际情况取舍,各字段之间要用分隔符分隔。可用作分隔符的符号有冒号、空格、逗号、分号等。1、标号标号是指令的符号地址。有了标号,程序中的其它语句才能很方便地访问该语句。有关标号的规定为:标号要由1~8个ASCII码字符组成,但必须以字母开头,其余字符可以是字母、数字或其它特定字符。不能使用汇编语言已经定义了的符号作为标号,如指令助记符MOV、伪指令记忆符END以及寄存器的符号名称R1等。标号后边必须跟冒号。同一标号在一个程序中只能定义一次,不能重复定义。2、操作码 操作码用于规语句执行的操作。它用指令助记符或伪指令助记符表示,是汇编语句中唯一不能空缺的部分。3、操作数操作数用于给指令的操作提供数据或地址。在一条语句中,可能没有操作数,可能只有1个操作数,还可能同时包含2~3个操作数。各操作数之间要以逗号分隔。操作数一 般以下面几种形式出现:常数工作寄存器名特殊功能寄存器名标号名符号“$”,表示程序计数器PC的当前值。如:SJMP $ 表达式4.注释注释不属于语句的功能部分,它只是对语句的解释说明,只要用“;”开头,就表明以下为注释内容。使用注释可使程序文件的编制显得更加清楚,便于编程人员的阅读和维护。注释的长度不限,一行不够可以换行接着书写,但换行后仍要以“;”开头。

源程序的编辑和汇编由于通用微型计算机的普及,现在单片机应用系统的程序设计都借助于通用微型计算机。全过程可概括为“机器编辑→交叉汇编→串行传送”三个部骤, 基本程序结构:程序结构通常分为三种形式:顺序结构、分支结构、循环结构。

顺序程序 顺序程序是最简单的程序结构,它既无分支,又无循环,在执行时单片机是按程序中指令的顺序逐条进行的。分支程序 分支结构可以分成单分支、双分支和多分支几种情况。分支程序在单片机系统中应用较多,在编程时有许多技巧,设计要点如下:(1)先建立可供条件转移指令测试的条件。(2)选用合适的条件转移指令。(3)在转移的目的地址处设定标号。循环程序 按某种控制规律重复执行的程序称为循环程序。循环程序 有先执行后判断和先判断后执行两种基本结构。1.循环初值(初始化)规定循环体中各控制变量的初始状态。2.循环处理(循环体)这是循环程序需要重复执行的部分。对这部分编程的时候要

注意两个问题:指令要具有通用性,程序要便于修改。程序尽可能简化。3.循环修改 循环程序每执行一次,都要对数据的地址指针、循环次数等作一次修改,这就是循环修改。4.循环控制 根据循环结束条件,判断循环是否结束。常用作循环控制的变量是循环次数。 例1 设内部RAM中(50H)=40H,(40H)=10H,P1口作输入口,(P1)=0ABH,问程序执行后各存储

器中的数据是什么? MOV R0,#50H

;立即数50H送R0中,(R0)=50H MOV A,@R0

;R0间接寻址,将50H单元内容送A,(A)=40H MOV R1,A

;A送R1,(R1)=40H MOV B,@R1

;R1间接寻址,将40H单元内容送B,(B)=10H MOV @R1,P1

;将P1内容送40H单元,(40H)=0ABH MOV P2,P1

;将P1内容送P2 ,(P2)=0ABH 执行结果: (R0)=50H, (A)=40H, (R1)=40H (B)=10H, (P1)=0ABH, (40H)=0ABH (P2)=0ABH

例把片外RAM的36H单元中的数据送到片外RAM的1200H单元。〈分析〉(36H)→(1200H) 程序如下: MOV R1,#36H MOVX A ,@R1 MOV DPTR,#1200H MOVX @DPTR, A

例设(60H)=X,(70H)=Y,试用堆栈指令实现60H和70H单元内容的互换。 MOV SP,#50H ;设栈底PUSH 60H ;51H←(60H),X压入51H单元PUSH 70H ;52H←(70H),Y压入52H单元POP 60H ;60H←(52H),Y弹出进入60H单元POP 70H ;70H←(51H),X弹出进入70H单元 例若(A)=84H,(30H)=8DH,执行指令ADD A,30H 之后,即:(A)=11H,(CY)=1,(AC)=1,(OV)=1(D7有进位,D6无进位),(P)=0。

【例】若(A)=0110 1001B,表示的BCD码为BCD (69)(R2)=0101 1000B,表示的BCD码为BCD (58) ,执行指令: ADD A,R2 DA A

(A)=0010 0111B,即BCD (27) 且(CY)=1,即正确的结果为:127 例若(A)=0101 0110B,表示的BCD码为

(56)BCD,(R2)=0110 0111B,表示的BCD码为 (67)BCD,(CY)=0。执行以下指令: ADD A,R2 DA A

由于(A)=0010 0011B,即,且(CY)=1,结果为BCD数123

例若(A)=C9H,(R2)=54H,(CY)=1,执行指令SUBB A,R2 即:(A)=74H,(CY)=0,(AC)=1,

(OV)=1(位6有借位,位7无借位),(P)=0。

例若(A)=50H,(B)=A0H,执行指令MUL AB 之后,(A)=00H,(B)=32H,(OV)=1,(CY)=0。

例若(A)=FBH(251),(B)=12H(18),执行指令DIV AB 之后,(A)=0DH,(B)=11H,(OV)=0,(CY)=0。

例若(A)=C3H,(R0)=AAH,执行指令ANL A,R0 之后,(A)=82H 例若(A)=C3H,(R0)=55H,执行指令ORL A,R0 之后,(A)=D7H 例若(A)=C3H,(R0)=55H,执行指令ORL A,R0 之后,(A)=D7H 例若(A)=A5H,执行指令CLR A 之后,(A)=00H。

例8 编程实现将P1口低4位的值存入30H单元,屏蔽高4位。 MOV A,P1 ANL A,#0FH MOV 30H,A

例编程实现将P1口低4位的值保持不变,而高4位置1。结果存入30H单元。 MOV A,P1 ORL A,#0F0H MOV 30H,A

例编程实现将P1口的高4位取反,而低4位保持不变,结果存 入40H单元。 MOV A,P1 XRL A,#0F0H MOV 40H,A

例:若(A)= BDH = 1011 1101B,(CY)=0。执行指令RLC A后,(CY)=1,(A)= 0111 1010B = 7AH,(CY)=1。

结果为:17AH(378)=2×BDH(189) 例有一段程序如下: MOV 23H,#0AH CLR A

LOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP $

该程序执行后:(A)=10+9+8+7+6+5+4+3+2+1=37H 例若(CY)=1,(P3)=1100 0101B,(P1)=0011 0101B。执行以下指令: MOV P1.3,C MOV C,P3.3 MOV P1.2,C

结果为:(CY)=0,P3的内容未变,P1的内容变为0011 1001B。

例若(P1)=1001 1101B。执行指令CLR P1.3后,结果为:( P1 )=1001 0101B。 例若(P1)=1001 1100B。执行指令SETB P1.0 后,(P1)=1001 1101B。

例若(P1)=1001 1100B,(CY)=1。执行指令ANL C, P1.0 后,结果为:P1 内容不变,

本文来源:https://www.bwwdw.com/article/urbd.html

Top