单片机应用技术第4章
单片机原理及应用第四章课后题答案
第四章作业答案16.MCS-51单片机系统中,片外程序存储器和片外数据存储器共用16位地址线和8位数据线,为何不会产生冲突?解:数据存储器的读和写由RD和WR信号控制,而程序存储器由读选通信号PSEN控制,这些信号在逻辑上时序上不会产生冲突;程序存储器访问指令为MOVC,数据存储器访问指令为MOVX。
程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于二者访问指令不同,控制信号不同,所以两者虽然共处于同一地址空间,不会发生总线冲突。
18.某单片机应用系统,需扩展2片8KB的EPROM和2片8KB的RAM,采用地址译码法,画出硬件连接图,并指出各芯片的地址范围。
解:硬件连接电路图如图4.18所示。
各芯片的地址范围为:2764(1#):0000H~1FFFH 2764(2#):2000H~3FFFH6264(1#):4000H~5FFFH 6264(2#):6000H~7FFFH图4.18 4.18题硬件连接电路图21.8255A的端口地址为7F00H~7F03H,试编程对8255A初始化,使A口按方式0输入,B口按方式1输出。
解:程序如下:ORG 0000HLJMP STARTORG 0030HSTART:MOV SP, #60HMOV DPTR,#7F03HMOV A,#10010100BMOVX @DPTR,ASJMP $END25.使用8255A或者8155的B端口驱动红色和绿色发光二极管各4只,且红、绿发光二极管轮流发光各1s,不断循环,试画出包括地址译码器、8255A或8155与发光管部分的接口电路图,并编写控制程序。
解:使用8255A,电路连接图如图4.25所示。
图4.25 4.25题硬件连接电路图其中,PB0~PB3接红色发光二极管,PB4~PB7接绿色发光二极管。
设MCS-51单片机主频为12MHz。
程序如下:ORG 0000HLJMP STARTORG 0030HSTART:MOV SP, #60HMOV DPTR, #7FFFH ; 数据指针指向8255A控制口MOV A, #80HMOVX @DPTR, A ; 工作方式字送8255A控制口MOV DPTR, #7FFDH ; 数据指针指向8255A 的B口MOV A, #0FH ; 置红色发光二极管亮LP1:MOVX @DPTR, A ; 置红色发光二极管亮LCALL DELAY ; 调用1S延时子程序CPL A ; 置发光二极管亮反色SJMP LP1 ; 循环执行DELAY:MOV R7,#10 ; 1s延时子程序D1:MOV R6,#200D2:MOV R5,#248D3:NOPDJNZ R5,D3DJNZ R6,D2DJNZ R7,D1RETEND采用定时器T0方式1中断实现1s定时。
单片机原理与应用第四章作业答案
4-9 试计算片内RAM区40H~47H单元中8个数据的平均值,结果存放在4Ah中;说明:先对8个数求和,结果放在30h,31h;然后用右移3次求平均。
ORG 0000HSJMP MAINORG 0030HMIAN: MOV R0,#40HMOV R1,#30HMOV 30H,#00HMOV 31H,#00HMOV R2,#8CLR CL1: MOV A,@R1ADDC A,@R0MOV @R1,AINC R0INC R1MOV A,@R1ADDC A,#00HMOV @R1,ADEC R1DJNZ R2,L1INC R1L2: MOV R2,#03HMOV A,@R1RRC AMOV @R1,AINC R1MOV A,@R1RRC AMOV @R1,ADEC R1DJNZ R2,L2DEC R1MOV 4AH,@R1SJMP $4-10 在起始地址为2100H,长度为64H的数表中查找ASCII码’F’,如果有,将其值送到1000H单元,如果没有,将0FFH送1000H单元.ORG 0000HSJMP MAINORG 0030HMAIN: MOV R2,#64MOV DPTR,#2100HL2: MOVX A,@DPTRCJNE A,#’F’,L1MOV DPTR,#1000HMOV A,#00HMOVX @DPTR,ASJMP LASTL1: INC DPTRDJNZ R2,L2MOV A,#0FFHMOVX @DPTR,ALAST: SJMP $4-11 试编写将片内40H~60H 单元中的内容传送到外部RAM以2000h为首地址的存放区域中,并将原数据全部清零。
ORG 0000HSJMP MAINORG 0030HMIAN: MOV R0,#40HMOV DPTR,#2000HMOV R1,#20HL1: MOV A,@R0MOVX @DPTR,AMOV @R0,#00HINC R0INC DPTRDJNZ R1,L1SJMP $4-12 编写,内部RAM50H‐59H 10个单元内容的平均值,并存放在5AH单元。
单片机原理及应用(C51版)第4章单片机C语言程序设计精品PPT课件
4.1 Keil C简介与环境设置 4.2 C51 4.3 C51基础知识及表达式 4.4 C51控制语句 4.5 数组 4.6 指针 4.7 函数 4.8 C51开发工具使用 4.9 Keil C调试方法
一般情况下单片机常用的程序设计语言有两种:
4.2 Cx51简介
4.2.1 Cx51的扩展
Cx51编译器兼容ANSI C标准,又扩展支持了8051微处 理
器,其扩展内容如下: ① 存储区; ② 存储区类型; ③ 存储模型; ④ 存储类型说明符; ⑤ 变量数据类型说明符; ⑥ 位变量和位可寻址数据; ⑦ SFR; ⑧ 指针; ⑨ 函数属性。
部RAM地址为0x80-0xFF的128字节存储单元,这些 存储器一般用作计时器、计数器、串口、并口和外围 使用。
4. sfr16类型 sfr16类型用于声明两个连续地址的特殊功能寄
存器(地址范围为0~65 535)。 5.其它类型 C51程序中常用的数据类型还有: char(字符型) unsigned char(无符号字符型) int(整型) unsigned int(无符号整型)等类型。
4.2.2 存储区
8051单片机支持程序存储器和数据存储器的分离,存 储器根据读写情况可以分为:程序存储区(ROM)、快速 读写存储器(内部RAM)、随机读写存储器(外部RAM)。
1. 程序存储器(code)
在中程序存储器是只读存储器,其空间为64K ,在 C51中用code关键字来声明访问程序存储区中的 变量。 。
● 汇编语言:
汇编语言具有执行速度快、占存储空间少、对硬件可直 接编程等特点,因而特别适合在对实时性能要求比较高的 情况下使用。
● C语言:
C语言克服了汇编语言的不足之处,同时又增加了代码 的可读性,C语言大多数代码被翻译成目标代码后,其效 率和汇编语言相当。特别是C语言的内嵌汇编功能,使C语 言对硬件操作更加方便。
单片机原理及应用教程(C语言版)-第4章 单片机C语言及程序设计
4.3.2 C51变量的存储类型
三、外部存储
外部(存储)变量:用extern声明的变量为外 部变量,是在其它文件定义过的全局变量。 用 extern声明后,便可以在所声明的文件中使用。
需要注意的是:在定义变量时,即便是全局变 量,也不能使用extern修饰。
4.3.2 C51变量的存储类型
四、寄存器存储
动态(存储)变量:用auto定义的为动态变量, 也叫自动变量。
作用范围:在定义它的函数内或复合语句内部 当定义它的函数或复合语句执行时,C51才为 变量分配存储空间,结束时所占用的存储空间释放。 定义变量时,auto可以省略,或者说如果省略 了存储类型项,则认为是动态变量。动态变量一般 分配使用寄存器或堆栈。
“C51”概念:为了与ANSI C区别,把“单片 机C语言”称为“C51”,也称为“Keil C”。
4.1.1 C语言编程的优势
在编程方面,使用C51较汇编语言有诸多优势: 1)编程容易 2)容易实现复杂的数值计算 3)容易阅读与交流 4)容易调试与维护 5)容易实现模块化开发 6)程序可移植性好
本 无符号整型 unsigned int 2字节 0~65535 有符号整型 signed int 2字节 -32768~32767
类 无符号长整型 unsigned long 4字节 0~4294967295
型 有符号长整型 signed long 4字节 -2147483648~2147483647
MCS-51单片机有四个存储空间,分成三类, 它们是片内数据存储空间、片外数据存储空间和 程序存储空间。
MCS-51单片机有更多的存储区域:由于片内 数据存储器和片外数据存储器又分成不同的区域, 所以单片机的变量有更多的存储区域。
单片机应用技术第4章.
ALOP: MOV A,P1
ADD A,R2
MOV R2,A
CLR A
ADDC A,R3
MOV R3,A
LCALL DY10ms
DJNZ R4,ALOP
MOV A,R3
MOV B,R2
MOV R0,30H
MOV R6,#0
MOV R5,#100
LCALL SUM
CJNE A,#50,NEXT
NEXT: JC GRET
当用PC作基址寄存器时,由于PC本身是一个程序计数器,与 指令的存放地址有关,所以查表时其操作有所不同。也可分为三 步:
① 变址值(表中要查的项与表格首地址之间的间隔字节数)→A;
② 偏移量(查表指令下一条指令的首地址到表格首地址之间的间隔字 节数)+A→A;
③ 执行MOVC A,@A+PC指令。
(双字节)存放在R3R4中,(设S<65536)。
解:程序如下:
SXN: MOV R2,#N
;置数据长度(循环次数)
MOV R3,#00H
;和单元(高8位)清0
MOV R4,#00H
;和单元(低8位)清0
MOV R0,#50H
;求和数据区首址
LOOP:MOV A,R4
;读前次低8位和
ADD A,@R0
等值伪指令 EQU(Equate)
格式:字符名称 EQU 数据或汇编符号 功能:将一个数据或特定的汇编符号赋予规定的字符名称。
ABC EQU 30H ;ABC=30H, #ABC=#30H
数据地址赋值伪指令 DATA
格式:字符名称 DATA 表达式 功能:将数据地址或代码地址赋予规定的字符名称。
例4-19
用查表程序求0~40之间整数的立方。已知该整 数存在内RAM 30H中,查得立方数存内RAM 30H (高8位)31H。
中职教育-单片机技术应用课件:第4章 汇编语言与仿真系统(1).ppt
第1章单片机基础知识
4.2 汇编语言程序设计
程序设计是学习单片机的重要内容,因为单片机系统都 是在软件的控制下完成规定的动作或功能,所以软件是硬件 的灵魂。程序设计也是单片机教与学的难点,有些同学因为 不会程序设计而最终无法跨入单片机应用的大门。要学好程 序设计,除了应熟悉、掌握常用的指令外,还必须多看(对 程序设计来说,模仿往往是学习的起步,不但要看程序,更 要看流程图)、多练(练习是基本知识的消化、巩固过程和 编程技巧的领悟途径)、多总结(如循环程序等很有规律, 总结出规律后,几乎可以一劳永逸地采用)。当然程序也并 非都由自己亲手编制,现在的网络资源非常丰富,利用网络 可以整合众人的智慧,互相“借用”别人的“劳动成果” (比如现成的子程序)也是一种方法或途径。
第1章单片机基础知识
【例4-1】
ORG
0050H
MOV MOV
SP,#60H R0,#2FH
……
上述ORG伪指令说明其后面程序的目标代码在存储器中存放 的起始地址是0050H,即: 存储器地址 目标程序
0050H
75 81 60
0053H
78 2F
……
第1章单片机基础知识
(2)等值指令 EQU 指令格式:字符名称 EQU 数字或汇编符号 功能:使指令中的字符名称等价于给定的数字或汇编符号。 使用等值指令可给程序的编制、调试、修改带来方便,如果 在程序中要多次使用某一地址,那么由EQU指令将其赋值给 一个字符名称,一旦需要对其进行变动,就只要改变EQU命 令后面的数字即可,而不需要对程序中涉及该地址的所有指 令逐句进行修改(人工逐句进行修改往往还会漏掉该修改的 地方,从而引起程序单元使用混乱,产生严重后果)。但要 注意,由EQU等值的字符名称必须先赋值后使用,且在同一 个源程序中,同一个标号只能赋值一次。
单片机原理与应用(陈桂友)第4章_指令系统
单片机原理及应用
4.3
寻址方式
8/79
操作数是指令的重要组成部分,它指定了参与运算的数或数所在 单元地址,而如何得到这个地址就称为寻址方式。一般来说,寻址方 式越多,计算机功能越强,灵活性越大。所以寻址方式对机器的性能 有重大影响。8051单片机共有7种寻址方式,描述如下:
1.立即寻址
指令中的源操作数是立即数,叫做立即寻址。立即数的类型可以 是:二进制(B)、十进制、十六进制(H)、整数、序数或者字符。立即 数的字长可以是8位或16位。 例如: MOV A,#61H 这条指令是把61H这个数据送入到累加器A中。 例如: MOV DPTR,#2050H 这条指令是把2050H这个数据送入到数据指针DPTR中。
程序存储器 PC 11100101 操作码 60H 01100000 直接地址
RAM 89H 89H ACC 0E0H
4:59:21
版权所有。
单片机原理及应用
10/79
3.寄存器寻址
指定某一可寻址的寄存器的内容为操作数,对寄存器ACC,B, DPTR和CY(进位标志,也是布尔处理机的累加器),其寻址时具体的 寄存器已隐含在其操作码中。而对选定的8个工作寄存器R7~R0,则用 指令操作码的低3位指明所用的寄存器。在应用中,可以先通过PSW中 的RS1、RS0两位来选择寄存器组,再用操作码中低3位来确定是组内哪 一个寄存器,达到寻址的目的。 例如:INC R5 ;把寄存器R3的内容加1后再送回R5
8位带符号偏移量。 当前工作区(0~3区)的工作寄存器(n=0,1,„,7) 可作地址寄存器的工作寄存器R0和R1(i=0,1) X寄存器内容 由X寄存器寻址的存储单元的内容 表示数据的传送方向 表示位操作数取反 表示逻辑与操作 表示逻辑或操作 表示逻辑异或操作
单片机原理及应用教案-第4章
第4课教学内容:2.4.2数据传送指令及要点分析2.4.3算术运算类指令及要点分析2.4.4逻辑操作与移位指令及要点分析2.4.5控制转移指令及其偏移量的计算2.4.6位操作指令2.4.7对指令的进一步说明教学目标:了解:单片机指令的分类与格式。
掌握:单片机指令的寻址方式,内部数据传送指令特点与应用,算术运算类指令及要点,逻辑操作与移位指令及要点,程序转移指令的相对偏移量计算,位操作指令的特点,PSW标志位的作用。
课时安排:3 课时教学重点:各类指令特点与应用教学提示:一、重点内容与要点分析1.数据传送类指令的共性:1)操作:把源操作数传送到目的操作数,指令执行后,源操作数不改变,目的操作数修改为源操作数。
2)若要求在进行数据传送时,不丢失目的操作数,则可以用交换型的传送指令。
3)数据传送指令不影响标志C、AC和OV,不包括奇偶标志P。
对于P一般不加说明。
POP PSW 或 MOV PSW,#(x)可能使某些标志位发生变化。
助记符有:MOV,MOVX,MOVC,XCH,XCHD,SWAP,POP,PUSH 8种。
源操作数可为:寄存器、寄存器间接、直接、立即、寄存器基址加变址 5种寻址方法;目的操作数可为:寄存器、寄存器间接、直接 3种寻址方法。
例1:设内部RAM的(30H)=40H,(40H)=10H ,(10H)=00H ,端口P1上的内容为11001010B(后缀B表示二进制数),分析下面7条指令分别属于上述16条指令中的哪一条,操作数采用的寻址方法,以及指令执行后各单元及寄存器、端口的内容。
MOV R0,#30H ;属于第8条(寄存器寻址、立即数寻址)(R0)=#30HMOV A,@R0 ;3条(寄存器寻址、寄存器间接寻址)(A)=#40HMOV R1, A ;2条(寄存器寻址、寄存器寻址)(R1)=#40HMOV B, @R1 ;13条(直接寻址、寄存器间接寻址)(B)=#10HMOV @R1, P1 ;14条(寄存器间接寻址,直接寻址)(40H)=#11001010B MOV P2, P1 ;15条(直接寻址、直接寻址)(P2)=#11001010B MOV 10H, #20H ;10条(直接寻址、立即寻址)(10H)=#20H指令执行以后,P1口的内容均为11001010B,其它内容如上。
精品课件-单片机原理及应用系统设计-第4章
;
PUSH
DPL
;
保护现场, 将主程序中
; DPTR的低八位放入堆
MOV
DPTR, #TABLE
; 在子程
第四章 单片机程序设计语言
恢复现场,
MOVC A, @A+DPTR
POP
DPL
将主程序中DPTR
; ;
;的低八位从堆栈中弹出
POP 场, 将主程序中DPTR
DPH
; 恢复现
;的高八位从堆栈中弹出
图 4-8 循环程序的典型形式
第四章 单片机程序设计语言
【例 4-4】 冒泡程序。假设有N个数, 它们依次存放 于LIST地址开始的存储区域中, 将N个数比较大小后, 使它 们按照由小到大的顺序排列,
编写该程序的方法: 依次将相邻两个单元的内容作比较, 即第一个数和第二个数比较,第二个数和第三个数比 较, ……, 如果符合从小到大的顺序则不改变它们在内存 中的位置,否则交换它们之间的位置。如此反复比较, 直到 数列排序完成为止。
LJMP MAIN
;
MAIN: MOV A, X
XRL A, Y
; (X)与(Y)进行异或操作
JB ACC.7, NEXT1
; 累加器A的第7位
为1, 两个数
;符号不同, 转移到
第四章 单片机程序设计语言
MOV
CJNE
转移到NEQUAL
CLR
P1.0置0
S
MOV DXCE1COUNTER, #00H
; 将DXCE1COUNTER赋值为0
而如下的注释则给出了额外有用的信息:
JNZ PC Comm_Err
;
第四章 单片机程序设计语言
(2) 注释应与其描述的代码相近, 对单条语句的注释应 放在其上方或右方相邻位置, 不可放在下面, 如放于上方
单片机原理及应用 第4章 MCS-51单片机系统的扩展技术
2.数据存储器典型扩展电路
6264的地址范围为:0000H~1FFFH。
[例题] 在上页图的数据存储器扩展电路中,将片内RAM 以50H单 元开始的16个数据,传送片外数据存储器0000H开始的单元中。
程序如下:
ORG 1000H MOV R0, #50H MOV R7, #16 MOV DPTR, #0000H AGAIN: MOV A, @R0 MOVX @DPTR, A INC R0 INC DPTR DJNZ R7, AGAIN RET END ; 数据指针指向片内50H单元 ; 待传送数据个数送计数寄存器 ; 数据指针指向数据存储器6264的0000H单元 ; 片内待输出的数据送累加器A ; 数据输出至数据存储器6264 ; 修改数据指针 ; 判断数据是否传送完成
4.2.1
程序存储器扩展
单片机内部没有ROM,或虽有ROM但容量太小时,必须扩 展外部程序存储器方能工作。最常用的ROM器件是EPROM 1. 常用EPROM程序存储器 EPROM主要是27系列芯片,如:2764(8K)/27128(16K) /27256(32K)/27040(512K)等,一般选择8KB以上的芯片作为 外部程序存储器。
4.2.3 MCS-51对外部存储器的扩展
下图所示的8031扩展系统中,外扩了16KB程序存储器(使用两片 2764芯片)和8KB数据存储器(使用一片6264芯片)。采用全地址译码方 式,P2.7用于控制2―4译码器的工作,P2.6, P2.5参加译码,且无悬空地 址线,无地址重叠现象。 1# 2764, 2# 2764, 3# 6264的地址范围分别为:0000H~1FFFH, 2000H~3FFFH, 4000~5FFFH。
MOV DPTR, #7FFFH ; 数据指针指向74LS377 MOV A, 60H ; 输出的60H单元数据送累加器A MOVX @DPTR, A ; P0口将数据通过74LS377输出
单片机原理及应用-第四章80C51单片机的功能
对两个操作数执行逻辑异或操作, 并将结果存放在目标地址中。
03
02
OR
对两个操作数执行逻辑或操作,并 将结果存放在目标地址中。
NOT
对操作数执行逻辑非操作,并将结 果存放在目标地址中。
04
控制转移指令
JMP
无条件跳转到指定地址。
JC/JNC
当进位标志位为1或0时,跳转 到指定地址。
JZ/JE
06
80C51单片机的串行通信 接口
串行通信的基本概念
串行通信
通过一条数据线,按照位顺序传输数据,实现数 据的发送和接收。
异步通信
数据传输速率不固定,发送器和接收器使用各自 的时钟。
同步通信
数据传输速率固定,发送器和接收器使用同一时 钟源。
80C51单片机的串行口结构及控制寄存器
要点一
串行口结构
算术运算指令
ADD
将两个操作数相加,并将结果存放在 目标地址中。
SUB
从源地址中减去目标地址中的值,并 将结果存放在源地址中。
MUL
将两个操作数相乘,并将结果存放在 目标地址中。
DIV
将源地址中的值除以目标地址中的值, 并将商存放在源地址中,余数存放在 累加器中。
逻辑运算指令
01
AND
对两个操作数执行逻辑与操作,并 将结果存放在目标地址中。
80C51单片机的应用领域
工业控制
80C51单片机在工业控制领域应用广泛, 如电机控制、自动化生产线控制等。
通信设备
80C51单片机在通信设备领域应用广 泛,如调制解调器、路由器、交换机
等。
智能仪表
80C51单片机可以用于各种智能仪表 的控制系统,如温度、压力、流量等 传感器采集和处理。
单片机应用 电子课件 第4章
0100H
P3,#11111111B A,P3
;关闭所有中断 ;使P3口锁存器置位
;读P3口引脚线信号
ANL A,#00010000B ;逻辑与操作,屏蔽掉无关位
JZ DDPING ;判断P3.4是否接地,是,跳转到DDPING执行
MOV P1,#00H
;否则,P3.4高电平,点亮所有发光二极管
MOV A,#0FEH
;送显示模式字
NEXT: MOV P1,A
;点亮连接P1.0的发光二极管
ACALL
DELAY
RL A
;左移一位,改变显示模式字
DJNZ R2,NEXT
;循环次数减1,不为零,继续点亮
下面一个二极管
SJMP START
高等职业技术教育研究会 & CEAC信息化培训认证管理办公室
国家信息化计算机教育认证
单片机应用
第四章 汇编语言程序设计
高等职业教育电子信息类专业 “双证课程”培养方案配套演示文稿
高等职业技术教育研究会 & CEAC信息化培训认证管理办公室
第四章 汇编语言程序设计
课程描述:
在同一个的单片机应用系统硬件平台上,配备不同的 工作软件,单片机应用系统所产生的效果,差别是非常 大的。如果说“硬件”是单片机应用系统基础,那么 “软件”就是单片机应用系统的灵魂。
SJMP $ DDPING: MOV
P1,#55H ;P3.4接地,发光二极管交叉亮灭
SJMP $
高等职业技术教育研究会 & CEAC信息化培训认证管理办公室
实训任务四 控制信号灯
【程序3】使8个发光二极管顺序点亮。
START: MOV R2,#08H ;设置循环次数
MCS-51单片机应用教程 第4章
3. 方式1或方式3的波特率 在这两种方式下,串行口波特率是由定时器的溢出率 决定的,因而波特率是可变的。波特率的公式为:
2SMOD 波特率= 定时器T1溢出率 32
定时器T1的溢出率计算公式为: f osc 1 定时器T 1 溢出率= K ( ) 12 2 -初值
式中: K为定时器T1的位数;若定时器T1方式0,则 K=13;若定时器T1方式1,则K=l6;若定时器T1方 式2或方式3,则K=8。
2. 串行口控制寄存器SCON SCON是可以进行位寻址ห้องสมุดไป่ตู้8位控制寄存器,地址 为98H。SCON的各位的定义和功能如下:
SCON.7 SM0
.6 SM1
.5
.4
.3
.2 RB8
.1 TI
SCON.0 RI
SM2 REN TB8
SM0、SM1: 串行口工作方式选择位(内容见 4.2.2节)。 SM2: 多机通信控制位。具体用法见4.3.3节。 REN: 串行接收允许位。由软件置位或清除。软 件置1时,串行口允许接收,清零后禁止接收。 TB8: 在方式2和方式3中是发送的第9位数据。 RB8: 在方式2和方式3中是接收的第9位数据。 TI: 发送中断标志位。发送结束时由硬件置位。 该位必须用软件清零。 RI: 接收中断标志位。结束接收时由硬件置位。 该位必须用软件清零。
2. 同步方式 将一大批数据分成几个数据块,数据块之间用同步 字符予以隔开,而传输的各位二进制码之间都没有 间隔,所以同步方式是按数据块传送数据的,一次 可以传送完一大批数据。 同步方式中,每一位数据占用的传输时间都是相等 的,接收机的接收时钟应该和发送机的发送时钟以 及传送的码元同步。图4-2(b)中给出了典型的数据 格式。与图4-2(a)相比,同步通信方式的数据格式 中没有两帧之间的空闲时间,也没有一帧之内的识 别标志位。显然这种方式可以大大提高通信速度, 常用于高速计算机的大容量数据通信。
单片机原理及应用技术第4章
操作码
规定语句执行的操作。它是汇编语句中唯一不能空 缺的部分。
操作数
给指令的操作提供数据或地址。汇编语句中操作 数可能是空缺的,也可能包括一项,还可能包括两 项或三项。操作数字段可包括以下几种情况: 工作寄存器名 特殊功能寄存器名 标号名 常数 符号“$”,表示PC的当前值 表达式
注释
增加程序可读性,该字段要以分号“;” 开头,长度不限。
目标码文件: 首地址 末地址 0040H 0044H
4.2.2
伪指令
汇编程序能识别并对汇编过程进行某种控 制的汇编命令。无对应的可执行目标码 起始地址设定
ORG 表达式 向汇编程序说明下面紧接的程序段或数据段存 放的起始地址。 表达式通常为16进制地址,也可以是已定义的 标号地址。
源程序的开始,要设置一条ORG伪指令来指定该程 序在存储器中存放的起始位置。 省略ORG,则该程序段从0000H单元开始存放。 可以多次使用ORG伪指令,但要求地址值由小到 大依序排列,不允许空间重叠。
例 无符号数排序程序。在片内RAM中,起始地 址为30H的8个单元中存放有8个无符号数。试对这 些无符号数进行升序排序。 冒泡排序法。从前向后进行相邻数的比较,如数 据的大小次序与要求的顺序不符就将这两个数互换, 否则不互换。对于升序排序,通过这种相邻数的互 换,使小数向前移动,大数向后移动。一次冒泡 (相邻数的互换),就会把最大的数换到最后。再 进行一次冒泡,就会把次大的数排在倒数第二的位 置。 设R7为比较次数计数器,初始值为07H,位地址 00H为数据互换标志位。
A,30H NEXT A,#80H ;判断符号位 LP A,#05H A,30H 30H,A LP 30H,#20H $
三、多分支程序
例 根据R7的内容转向相应的处理程序。 设R7的内容为0~N,对应的处理程序的入口地址分别为PP0~PPN。
单片机应用技术课件第四章
Bit=0: I/O Function is selected for the pin Bit=1: Peripheral module function is selected for the pin Setting PxSEL=1 does not automatically set the pin direction. Other peripheral module functions may require the PxDIR bits to be configured according to the direction needed for the module function.
(4) Pullup or Pulldown Resistor Enable Registers (PxREN)
PxREN的各位用于使能对应I/O引脚的上拉/下拉电阻,该寄存器需和PxDlR 、PxOUT配合使 用,才能完成上拉/下拉的配置. Bit=0: Pullup/pulldown resistor disabled Bit=1:Pullup/pulldown resistor enabled Table 12-1 summarizes the usage of PxDIR, PxREN, and PxOUT for proper I/O configuration.
第4章 数字I/O模块
1、内容 ① 数字I/O模块概述 ② 数字I/O模块寄存器设置 ③ 端口输入输出电路 ④ 端口功能 ⑤ 寄存器与控制位 ⑥ 数字I/O端口应用 ⑦ 习题 2、要求 ① 了解端口输入输出电路 ② 掌握MSP430单片机数字I/O模块的 特点与配置方法。 ③ 掌握MSP430单片机数字I/O模块按 键、LED接口方法。
单片机应用第四章
4.1 软件编程的步骤及方法 4.2 汇编语言源程序的汇编 4.3 典型程序设计举例 实训四 交通灯控制 本章小结
4.1 软件编程的步骤及方法
4.1.1 软件编程的步骤
用汇编语言编写程序,一般要经过如下步骤: 用汇编语言编写程序,一般要经过如下步骤: 1. 分析问题,明确任务 分析问题, 这一步就是要明确设计任务,功能要求及技术指标, 这一步就是要明确设计任务,功能要求及技术指标,对系统 的硬件资源和工作环境进行分析。 的硬件资源和工作环境进行分析。这是单片机应用系统程序 设计的基础和条件。 设计的基础和条件。 2. 确定算法 确定算法就是在全面准确分析程序设计任务之后, 确定算法就是在全面准确分析程序设计任务之后,具体地选 定解决问题的算法。对同一个问题,可以有多种不同的算法, 定解决问题的算法。对同一个问题,可以有多种不同的算法, 设计者要分析各种不同的算法,从中选择一种最佳算法。 设计者要分析各种不同的算法,从中选择一种最佳算法。
上一页 下一页 返回
4.1 软件编程的步骤及方法
换页符:当流程图在一页画不下需要分页时, 换页符:当流程图在一页画不下需要分页时,使用换页符表 示相关流程图之间的连接。 示相关流程图之间的连接。 流程线:表示程序执行的流向。 流程线:表示程序执行的流向。 4. 编写源程序 用汇编语言把流程图表明的步骤或过程描述出来。 用汇编语言把流程图表明的步骤或过程描述出来。在编写源 程序之前,应合理地选择和分配内存单元和工作寄存器。 程序之前,应合理地选择和分配内存单元和工作寄存器。 5. 汇编和调试 汇编就是将编写好的源程序翻译为计算机所能识别执行的机 器语言程序,即目标程序。 器语言程序,即目标程序。实际应用中这一步都是采用机器 汇编。在汇编过程中, 汇编。在汇编过程中,可以发现源程序中在指令格式及使用 上出现的问题或错误。 上出现的问题或错误。
单片机原理与应用技术(第2版)电子课件第4章教材
◆ 方式1
方式1与方式0基本相同,唯一区别在于:方式1计数寄存器的位数为16 位,由THx和TLx 寄存器各提供 8位计数初值,最大计数值为 216=65536。 定时时间: T =(65536-M0)×12/fosc
◆ 方式2
方式2是8位的可自动重装载计数初值的定时/计数方式,最大计数值为 28=256。定时时间: T =(256-M0)×12/fosc
1、中断处理的过程 中断处理过程分为4 个阶段,即中断请求、 中断响应、中断服务和 中断返回。MCS-51系 列单片机的中断处理流 程如图所示。
单片机原理与应用技术(第2版)清华大学出版社
2、中断申请的撤除 1) 定时器中断请求的撤除
对于定时器 T0 或 T1 溢出中断, CPU 在响应中断后即由硬件
◆ 方式3
方式3只适合于定时/计数器0(T0)。当T0工作在方式3时,TH0和TL0成 为两个独立的计数器。这时 TL0 可作定时 / 计数器,占用 T0 在 TCON 和 TMOD寄存器中的控制位和标志位;而TH0只能用作定时器,占用T1的 资源TR1和TF1。在这种情况下,T1仍可用于方式0、1、2,但不能使用 中断方式。
单片机原理与应用技术(第2版)清华大学出版社
单片机原理与应用技术(第2版)清华大学出版社
小 结
• 中断是指当机器正在执行程序的过程中,一旦遇到某些 异常情况或特殊请求时,暂停正在执行的程序,转入必 要的处理(中断服务子程序),处理完毕后,再返回到原 来被停止程序的间断处(断点)继续执行。引起中断的事 情称为中断源。中断请求的优先级由用户编程和内部优 先级共同确定。 • 中断编程包括中断入口地址设置、中断源优先级设置、 中断开放或关闭、中断服务子程序等。本章通过实例分 别介绍了采用汇编语言程序和C语言程序编写中断程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2.3 循环程序
循环程序一般包括以下几个部分: ⑴ 循环初值; ⑵ 循环体; ⑶ 循环修改; ⑷ 循环控制; 以上四部分可以有两种组织形式,其结构如图4-6所 示。
例4-10
设Xi均为单字节数,并按顺序存放在以50H为首地址的内RAM存储单元 中,数据长度(个数)N存在R2中,试编程求和S=X1+X2+‥‥+XN,并将S (双字节)存放在R3R4中,(设S<65536)。 解:程序如下: SXN: MOV R2,#N ;置数据长度(循环次数) MOV R3,#00H ;和单元(高8位)清0 MOV R4,#00H ;和单元(低8位)清0 MOV R0,#50H ;求和数据区首址 LOOP:MOV A,R4 ;读前次低8位和 ADD A,@R0 ;低8位累加 MOV R4,A ;存低8位和 CLR A ; ADDC A,R3 ;高8位加进位 MOV R3,A ;存高8位和 INC R0 ;指向下一数据 循环修改 DJNZ R2,LOOP ;判N个数据累加完否? 循环控制 RET ;退出循环 退出循环
定义字节伪指令DB(Define Byte)
格式:DB 8位二进制数表 功能:从指定的地址单元开始,定义若干个8位内存单元的 数据。数据与数据之间用“,”分割。
ORG 4000H TAB:DB 73H,45,”A”,”2” ;(4000H)=73H,(4001H)=2DH…
定义字伪指令DW(Define Word)
一般应按以下几个步骤进行: 1.分析问题,确定算法或解题思路 2.画流程图 3.编写源程序 4.汇编和调试
4.2 程序设计举例
4.2.1 顺序程序
顺序程序是指按顺序依次执行的程序,也称为简单 程序或直线程序。 顺序程序结构虽然比较简单,但也能完成一定的功 能任务,是构成复杂程序的基础。
例4-2
已知16位二进制负数存放在R1R0中,试求其补码,并将结 果存在R3R2中。 解:二进制负数的求补方法可归结为“求反加1”,符号位不变。利用 CPL指令实现求反;加1时,则应低8位先加1,高8位再加上低位 的进位。注意这里不能用INC指令,因为INC指令不影响标志位。 CONT: MOV A,R0 ;读低8位 CPL A ;取反 ADD A,#1 ;加1 MOV R2,A ;存低8位 MOV A,R1 ;读高8位 CPL A ;取反 ADDC A,#80H;加进位及符号位 MOV R3,A ;存高8位 RET
例4-17
在单片机应用系统中,常用LED数码管显示数码,但显示数字 (≤9)与显示数字编码并不相同,需要将显示数字转换为显示字段 码,通常是用查表的方法。现要求将30H中的显示数字转换为显 示字段码并存入30H。已知共阴字段码表首址为TABD。 解:编程如下: CHAG: MOV DPTR,#TABD;置共阴字段码表首址 MOV A,30H ;读显示数字 MOVC A,@A+DPTR ;查表,转换为显示字段码 MOV 30H,A ;存显示字段码 RET ; TABD:DB 3FH,06H,5BH,4FH,66H;0~4共阴字段码表 DB 6DH,7DH,07H,7FH,6FH;5~9共阴字段码表
4.1.2 伪指令
用汇编语言编写的程序称为汇编语言源程序。而计算机 是不能直接识别源程序的,必须把它翻译成目标程序 (机器语言程序),这个翻译过程叫“汇编”。 在汇编时起控制作用,自身并不产生机器码,而仅是为 汇编服务的一些指令,称为伪指令。伪指令不属于 80C51指令系统。
起始伪指令 ORG(Origin)
解:程序如下: FLASH:MOV A,#01H FSH0: MOV R2,#0AH FLOP: MOV P1,A LCALL DY1s MOV P1,#00H LCALL DY1s DJNZ R2,FLOP RL A SJMP FSH0 RET
;置灯亮初值 ;置闪烁次数 ;点亮 ;延时1s ;熄灭 ;延时1s ;闪烁10次 ;左移一位 ;循环
格式:ORG 16位地址 功能:规定ORG下面目标程序的起始地址。
ORG 0100H START; MOV A,#05H ;标号START代表的地址为0100H
结束伪指令 END
格式:END 功能:汇编语言源程序的结束标志。 在END后面的指令,汇编程序不再处理。一个源程序 只能有一个END指令,放在所有指令的最后。
GON:
NEXT: GRET:
4.2.4 查表程序
在80C51中,数据表格是存放在程序存储器ROM中, 而不是在RAM中。编程时,可以通过DB伪指令将表格 的内容存入ROM中。
用于查表的指令有两条: MOVC A,@A+DPTR MOVC A,@A+PC
当用DPTR作基址寄存器时,查表的步骤分三步: ① 基址值(表格首地址)→DPTR; ② 变址值(表中要查的项与表格首地址之间的间隔字节数)→A; ③ 执行MOVC A,@A+DPTR。
例4-15
编制一个循环闪烁灯的程序。
设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反 相三态缓冲/驱动器)接8只发光二极管,如图4-8所示。当输出位 为“1”时,发光二极管点亮,输出位为“0”时为暗。试编程实 现:每个灯闪烁点亮10次,再转移到下一个灯闪烁点亮10次,循 环不止。
4.2.1 分支程序
根据不同条件转向不同的处理程序,这种结构的程 序称为分支程序。 80C51指令系统中的条件转移指令、比较转移指 令和位转移指令,可以实现分支程序。
例4-8
已知电路如图4-5所示,要求实现: ① S0单独按下, 红灯亮,其余灯灭; ② S1单独按下, 绿灯亮,其余灯灭; ③ 其余情况,
例4-13
编写延时10ms子程序,fosc=12MHz。 解:fosc=12MHz,一个机器周期为1s。 DY10ms:MOV R6,#20 ; 置外循环次数 DLP1: MOV R7,#250 ; 置内循环次数 DLP2: DJNZ R7,DLP2 ; 2机周×250 =500机周 DJNZ R6,DLP1 ; 500机周×20= 10000机周 RET ; 说明:MOV Rn指令为1个机器周期;DJNZ指令为2个机器周期; RET指令为2个机器周期; {[(2机周×250)+1+2]×20+1+2}×1s/机周 =10063s≈10ms
格式:DW 16位二进制数表 功能:从指定的地址单元开始,定义若干个16位数据。占 用两个字节,高8位先存入,低8位后存入。不足16位 者,用0填充。
ORG 1000H HTAB:DW 7856H,89H,30 ;(1000H)=78H,(1001H)=56H…
定义位地址伪指令BIT
格式:字符名称 BIT 位地址 功能:将位地址赋予所规定的字符名称。
第4章
本章要点
汇编语言程序设计
80C51汇编语言语句结构的基本格式 伪指令的功能和应用 汇编的概念 程序设计的步骤和基本方法 顺序程序 分支程序 循环程序 查表程序 散转程序
4.1汇编语言程序设计基本概念
4.1.1汇编语言及其语句结构
标号:操作码 [目的操作数,源操作数];注释
例4-19
用查表程序求0~40之间整数的立方。已知该整 数存在内RAM 30H中,查得立方数存内RAM 30H (高8位)31H。
等值伪指令 EQU(Equate)
格式:字符名称 EQU 数据或汇编符号 功能:将一个数据或特定的汇编符号赋予规定的字符名称。
ABC EQU 30H ;ABC=30H, #ABC=#30H
数据地址赋值伪指令 DATA
格式:字符名称 DATA 表达式 功能:将数据地址或代码地址赋予规定的字符名称。 DATA与EQU的区别:EQU定义的符号必须先定义后使 用,DATA可以先使用后定义。
(2)边平均边累加
AVRG2: ALOP: MOV MOV MOV MOV MOV DIV ADD MOV MOV ADD MOV CLR SUBB JC INC MOV LCALL DJNZ MOV CJNE JC INC RET 30H,#0 31H,#0 R4,#100 A,P1 B,#100 AB A,30H 30H,A A,B A,31H 31H,A C A,#100 GON 30H 31H,A DY10ms R4,ALOP A,31H A,#50,NEXT GRET 30H ;商累加寄存器清0 ;余数累加寄存器清0 ;置平均次数 ;读P1口数据 ;置除数(平均次数) ;P1口数据除以100 ;商累加 ;回存 ; ;余数累加 ;回存 ; ; ;余数累加<100,余数累加寄存器不变 ;余数累加≥100, 商累加寄存器+1 ;减去100后差→余数累加寄存器 ;延时10ms ;判100次累加完否?未完继续 ;100次累加完毕,余数累加四舍五入 ; ;C=1,<50, 舍 ;C=0,≥50, 入
黄灯亮。
解:程序如下 SGNL:ANL P1,#11100011B ;红绿黄灯灭 ORL P1,#00000011B ;置P1.0、P1.1输入态, P1.5~P1.7状态不变 SL0: JNB P1.0,SL1 ;P1.0=0,S0未按下,转判S1 JNB P1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮 YELW:SETB P1.4 ;黄灯亮 CLR P1.2 ;红灯灭 CLR P1.3 ;绿灯灭 SJMP SL0 ;转循环 SL1: JNB P1.1,YELW ;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮 GREN:SETB P1.3 ;绿灯亮 CLR P1.2 ;红灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 RED: SETB P1.2 ;红灯亮 CLR P1.3 ;绿灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环
DEF BIT 30H ;把位地址赋给字符DEF,DEF可作为位地址30H使用。