单片机第四章7 (26)
完整word版第4章单片机原理课后答案
习题1. C51特有的数据类型有哪些?答:C51特有的数据类型有位型bit、特殊位型sbit、8位特殊功能寄存器型sfr和16位特殊功能。
sfr16寄存器型2. C51中的存储器类型有几种,它们分别表示的存储器区域是什么?答:C51中的存储器类型有6种,分别表示的存储器区域是:data:直接寻址的片内RAM低128B,访问速度快bdata:片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问idata:间接寻址访问的片内RAM,允许访问全部片内RAMpdata:用Ri间接访问的片外RAM低256Bxdata:用DPTR间接访问的片外RAM,允许访问全部64KB片外RAMcode:程序存储器ROM 64KB空间3. 在C51中,bit位与sbit位有什么区别?答:bit位类型符用于定义一般的位变量,定义的位变量位于片内数据存储器的位寻址区。
定义时不能指定地址,只能由编译器自动分配。
sbit位类型符用于定义位地址确定的位变量,定义的位变量可以在片内数据存储器位寻址区,也可为特殊功能寄存器中的可位寻址位。
定义时必须指明其位地址,可以是位直接地址,也可以是可位寻址的变量带位号,还可以是可位寻址的特殊功能寄存器变量带位号。
4. 在C51中,通过绝对地址来访问的存储器有几种?答:绝对地址访问形式有三种:宏定义、指针和关键字“_at_”。
5. 在C51中,中断函数与一般函数有什么不同?答:中断函数是C51的一个重要特点,C51允许用户创建中断函数。
中断函数用interruptm修饰符,m的取值为0~31,对应的中断情况如下:0——外部中断01——定时/计数器T02——外部中断13——定时/计数器T14——串行口中断5——定时/计数器T2中断函数需要注意如下几点。
(1) 中断函数不能进行参数传递(2) 中断函数没有返回值(3) 在任何情况下都不能直接调用中断函数(4) 如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同(5) C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容(6) C51编译器从绝对地址8m+3处产生一个中断向量(7) 中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明6. 按给定的存储类型和数据类型,写出下列变量的说明形式。
单片机学习第四章汇编语言程序设计
ORG START:CLR
MOV SUBB JC MOV XCH MOV NEXT: NOP SJMP END
1000H C A,60H A,61H NEXT A,60H A, 61H 60H,A
$
;0→CY
;做减法比较两数 ;若(60H)小,则转移
;交换两数
整理课件
【例4.6】将R2中的一位十六进制数转换为 ASCII码,结果仍存放于R2中。
MOV R0, #0 SJMP NEXT4 NEXT2:MOV R0,A DEC R0 NEXT4:MOV 31H,R0 SJMP $ END
;取X ;与5比较
;X<5,则转NEXT2 ; ;设10<X,Y=X十1
;与1l比较 ;x>10,则转NEXT4
;5≤X≤10,Y=0
;X<5,Y=X-1 ;存结果
MOV
@R0,A
;保存结果
SJMP $
;原地踏步
END
整理课件
【例4.2】假设两个双字节无符号数,分别存 放在R1R0和R3R2中,高字节在前,低字 节在后。编程使两数相加,用R2R1R0存放 和。 对多字节的加法,存在最高位的进位问题。 如果最高位有进位,则和的字节数要比加 数或被加数的字节数多一个。
经常用于定义一个地址表。Yi为双字节数据, 它可以为十进制或十六进制的数,也可以 为一个表达式。高位数在前,低位数在后。
整理课件
• 例如: ORG 1000H DATA:DW 3241H,1234H,78H 上述程序将对从1000H单元开始的6个单元 赋值,赋值情况如何呢? (1000H)=32H,(1001H)=41H, (1002H)=12H,(1003H)=34H, (1004H)=00H,(1005H)=78H。
单片机微型计算机原理及接口技术课后习题答案第4章
单片机微型计算机原理及接口技术课后习题答案第4章4-2 试述指令MOV A,R0和MOV A,@R0的区别两条指令的目的操作数相同,两条指令的区别在于源操作数来源不同:MOV A,R0 指令的源操作数就是R0寄存器的内容;而MOV A,@R0 指令的源操作数是位于存储器单元内,且存储器单元的地址是R0寄存器的内容。
4-3 试述指令MOV A,20H和MOV A,#20H的区别MOV A,20H 源操作数是直接寻址,20H表示源操作数所在存储器单元的地址。
MOV A,#20H 源操作数是立即数寻址,#20H是立即数,也就是源操作数。
4-4 说明一下指令中源操作数所在的存储器类型。
(1)MOV A,#30H; 立即数#30H,就是源操作数,存在于指令中,所以位于程序存储器。
(2)MOV A,30H; 30H是源操作数所在数据存储单元的地址,所以源操作数位于数据存储器。
(3)MOVC A,@A+DPTR;源操作数是变址寻址, 助记符MOVC表示源操作数位于程序存储器。
(4)MOVX A,@DPTR; 源操作数是寄存器间接寻址, 助记符MOVX表示源操作数位于外部数据存储器。
4-5 判断下列指令书写是否正确:(1)MOV A,B; ✔(2)MOV A,#3000H ; ✘,因为A是8位寄存器,而#3000H是16位数值,没法全部存到A里(3)INC,#20H ; ✘只能INC A/direct/Rn/@Ri/DPTR(4)MOV 5,A ; ✔,注意目的操作数是直接寻址方式,不是立即寻址(5)MOV 30H,40H; ✔(6)MOV B,@DPTR ; ✘,@DPTR寻址用于MOVX指令,不能用于MOV指R(7)CJNE 30H,#80H,NEXT ; ✘,CJNE指令格式只能是CJNE A/Rn/@Ri,#data,rel或CJNE A,direct,rel(8)POP A ; ✘只能是直接寻址方式POP direct,正确的是POP ACC(9)PUSH ACC; ✔(10)SJMP 2000H ; ✘rel的范围是-128~127(用补码表示其值)共256B范围4-6 设ACC=12H,B=64H,SP=60H,30H中存放的是78H,试分析下列程序执行后,ACC、B、30H、SP中的内容分别为多少,并画出堆栈示意图。
第4章单片机原理及应用(C51编程)
4.3 C51的函数
4.3.1
返回值类型 { 函数体 }
C51函数的定义
函数名(形式参数列表)[编译模式][reentrant][interrupt n][using n]
一般形式:
编译模式为SMALL、COPACT或LARGE reentrant用于定义可重入函数 interrupt n 用于定义中断函数,n为中断号,可以为0~31 using n 确定工作寄存器组,取值为0~3
从而使DBYTE用于以字节形式对data区访问,可以写成:
与此类似: CBYTE用于以字节形式对code区进行访问; PBYTE用于以字节形式对pdata区进行访问; XBYTE用于以字节形式对xdata区进行访问。
CWORD、DWORD、PWORD和XWORD用于以字形式对 code区、data区、pdata区和xdata区进行访问。
4.2.4
C51程序编写示例
C51源程序
C51编译器
浮动目标码模块 系统库 连接器
列表文件 用户库
绝对定位目标码文件
映像文件
软件模拟器
转换器
硬件仿真器
OMF51格式文件 写入程序存储器 编程器
【例4-1】将30H至3FH共16个RAM单元初始化为“55H”。 #include <reg52.h> #include <absacc.h> void main(void) { unsigned char i; for (i=0;i<=15;i++) { DBYTE[0x30+i]=0x55; } while(1); } 编译系统自动连接了 startup.a51生成代码 一是将内部RAM的 00H~7FH清0; 二是设置堆栈指针SP。 有全局变量赋值时 编译系统会自动连接 init.a51生成代码
单片机基础(第3版)-第4章
定时器函数
用于产生定时器中断或延时。
串口通信函数
用于单片机之间的数据传输。
04
CATALOGUE
单片机应用实例
单片机在智能家居中的应用
智能照明系统
利用单片机控制LED灯的亮度和色温 ,实现节能和舒适的照明环境。
智能安防系统
单片机可以用于监控家庭安全,如门 窗传感器、烟雾报警器等。
智能环境监测
单片机可以监测室内温度、湿度、空 气质量等参数,并通过网络实时上传 数据。
用于连接可编程外设,如定时器、中断控制器等。
03
CATALOGUE
单片机软件编程
单片机编程语言概述
01
02
03
汇编语言
直接与硬件交互,代码效 率高,但可读性差,开发 难度大。
C语言
高效、易读、易维护,适 用于复杂程序开发。
其他语言
如Basic、Pascal等,应用 较少。
C语言在单片机编程中的应用
单片机可以用于控制机器人的运动轨迹和 姿态,实现自动化作业。
单片机在智能仪表中的应用
智能电表
单片机可以用于测量和记录电能消耗,支持 远程抄表和费率控制等功能。
智能水表
单片机可以用于测量和记录水的使用情况, 支持远程抄表和报警等功能。
智能气表
单片机可以用于测量和记录天然气的使用情 况,支持远程抄表和报警等功能。
02
CATALOGUE
单片机硬件结构
单片机的基本组成
01
02
03
04
运算器
用于执行算术和逻辑运算的部 件。
控制单元
负责控制单片机各部件的协调 工作。
存储器
用于存储程序和数据。
输入/输出接口
单片机原理及应用 第四章 80C51单片机的功能单元
Vcc
R (上拉电阻)
P1·X 引脚
1
读引脚
输入缓冲器
驱动能力:P1、P2、P3可驱动4个LSTTL负载 P0可驱动8个LSTTL负载
2、用作输入口 两种工作方式:
读锁存器 读引脚
1)读锁存器
将端口锁存器的内容读入内部总线,经过运算和变换,再 写回到端口锁存器。
称为 读—修改—写指令
例:ANL P1,#0FH
1、用作输出口 可直接与外设相连,不必外加字锁节存寻器址
输出指令:
MOV P1,A MOV P1,#data
;MOV P1,Rn ;MOV P1,@Ri
MOV P1,direct 位操作
MOV P1.X , C
P1·0位
读锁存器
内部总线 1
写锁存器
例: MOV P1,#0FH
输入缓冲器
1 D P1·X Q CL 锁存器 Q 0
4、作为双向口使用 准双向口
80C51的4个I/O口在进行数据的输入输出操作时, 均可作为双向口使用。即,同一口线既作为输入 口,又用作输出口。
操作方法:以P1口为例 MOV P1, A
;直接使用输出指令
··· ··· MOV P1,#0FFH MOV A,P1
;锁存器置1 ;输入指令
80C51的P1由输出口转为输入口时,需先将锁 存器置1,然后使用输入指令。
P1、P2、P3口: 4个TTL负载
五、80C51的外部总线
4.2 定时/计数器
单片微机系统特点:面向测控系统
要求单片微机能够提供实时功能,以实现定时、 延时或实时时钟;也常要求计数功能,以实现 对外部事件计数
80C51系列单片微机提供2个(8051型)或3个 (8052型)16位的定时/计数器,可程控为4种 工作方式
第4章8051单片机的中断系统
第四章 8051单片机的中断系统
例3-3 双字节数取补子程序。将(R4R5)中的双字节数取补,结果 送R4R5。 低8位送入A CMPT: MOV A,R5 低8位取反 CPL A ADD A, #1 低8位最低位加1 MOV R5, A MOV A, R4 CPL A 与前面相似 ADDC A, #0 MOV R4,A 无需SETB ACC.7 RET 对于二进制数,左移一位相当于乘以2,右移一位相当于除以2。 由于一般带符号数的最高位为符号位,故在执行算术移位操作时, 必须保持符号位不变。 原码表示的负数:由于负数的符号位为1,故移位时符号位不参 加移位; 8
第四章 8051单片机的中断系统
具体
14
第四章 8051单片机的中断系统 例3-10无符号二进制乘法程序。将(R2R3)和(R6R7)两个双字节 无符号数相乘,结果送R4R5R6R7。
NMUL: MOV R4, #0 MOV R5, #0 MOV R0, #16 ; 16位二进制数 CLR C NMLP: MOV A, R4 ;右移一位 RRC A MOV R4, A MOV A, R5 RRC A R4 R5 MOV R5, A MOV A, R6 RRC A MOV R6, A MOV A, R7 RRC A MOV R7, A JNC NMLN ;C为移出的乘数最低位, 若为0,则不执行加法 MOV A, R5 ;执行加法 15 ADD A, R3 MOV R5, A MOV A, R4 ADDC A, R2 MOV R4, A NMLN: DJNZ R0, NMLP ;循环16次 MOV A, R4 ;最后再右移一位 RRC A MOV R4, A R6 R7 MOV A, R5 RRC A MOV R5, A MOV A, R6 RRC A MOV R6, A MOV A, R7 RRC A MOV R7, A RET
(单片机完整课件PPT)第四章
访问 SFR 的 数据类型
例:
bit a1; unsigned char a2; unsigned int a3; unsigned char *a4; unsigned int *a5; a1=0; //位a1为0 a2=0x20; //字节变量a2=20h a3=0x1234; //整型(字)变量a3=1234h a4=0x30; //a4指向内RAM30h单元 a5=0x2000; //a5指向外RAM2000h单元
注意:
Unsigned char code a[10]={0,1,4,9,16,25,36,49,64,81}; Main() {unsigned char x,y; x=3; y=a[x];
a[3]=5;
定义表格数据, 存放在ROM里
}
Unsigned char a[10]={0,1,4,9,16,25,36,49,64,81}; Main() {unsigned char x,y; x=3; y=a[x]; a[3]=5; }
单片机原理与应用技术
厦门理工学院电子与电气工程系 陈志英
第四章 单片机C语言程序设计
4.1 C51的一般格式 4.2 51单片机的C51定义 4.3 C51程序设计简单举例
4.1 C51的一般格式
C程序(.C) 汇编程序(.ASM) 指令代码(.BIN)
C编译器 汇编器
C编译器
C51
FRANKLIN C51 KEIL C51 格式基本相同,可以兼容
数 据 类 型 data/idata/pdata 指针型 code/xdata 通用指针 sbit SFR SFR16
长度/位 8 16 24 1 8 16
字节数 1 2 3 — 1 2
单片机应用技术(第三版)第四章汇编语言程序设计课件
第4章 汇编语言程序设 计 实训4 信号灯的控制2
4.1 概述 4.2 简单程序设计 4.3 分支程序设计 4.4 循环程序设计 4.5 查表程序 4.6 子程序设计与堆栈技术 本章小结 习题4
第4章 汇编语言程序设计
实训4 信号灯的控制2
1. 实训目的 (1) 掌握汇编语言程序的基本结构。 (2) 了解汇编语言程序设计的基本方法和思路。 2. 实训设备与器件 (1) 实训设备:单片机开发系统、微机等。 (2) 实训器件与电路:参见实训1电路图。 3. 实训步骤与要求 (1) 运行程序1,观察8个发光二极管的亮灭状态。
ORG 0000H ;程序从地址0000H开始存放
START: MOV P1,#00H
;把立即数00H送P1口,点亮
;所有发光二极管
ACALL DELAБайду номын сангаас ;调用延时子程序
MOV P1,#0FFH
;灭掉所有发光二极管
第4章 汇编语言程序设计
(2) 在单片机开发调试环境中,将内部RAM的20H单元内
容修改为00H,运行程序2,观察8个发光二极管的亮灭状态;
重新将内部RAM的20H单元内容修改为80H,再次运行程序2,
观察8个发光二极管的亮灭状态。
(3) 运行程序3,观察8个发光二极管的亮灭状态。
程序1:所有发光二极管不停地闪动。
单片机原理及应用教案-第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单片机汇编语言程序设计
(1)绝对调用指令:ACALL addr11 (2)长调用指令:LCALL addr16
(后续)
4.2.4 子程序设计
3.注意设置堆栈指针和现场保护 4.最后一条指令必须是RET指令 5.子程序可以嵌套,即子程序可以调用子程序
(接上)
6.在子程序调用时,还要注意参数传递的问题
子程序的基本结构
MAIN: ┇ ;MAIN为主程序或调用程序标号 ┇ LCALL SUB ;调用子程序 ┇ SUB:PUSH PSW PUSH ACC ;现场保护 ;
过程B
是 出口 (c) 循环结构
出口 (b) 分支结构
4.2.1
顺序程序结构
是汇编语言程序的最简单也是最基本的程序结 构。程序执行时一条接一条地按顺序执行指令, 无分支、循环以及调用子程序。 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A , #30H ADD A , #58H MOV 30H , A SJMP $
二、定时程序 (2)多重循环定时程序(单片机频率为6MHz) 例 MOV R5,#TIME1 LOOP2: MOV R4,#TIME2 ;单周期指令 LOOP1: NOP ;单周期指令 NOP DJNZ R4,LOOP1 ;双周期指令 DJNZ R5,LOOP2 ;双周期指令 RET 公式: 循环体时间=(TIME2*4+2+1)*TIME1*2µs 总时间=循环体时间+4µs
机器编辑->交叉汇编->串行传送
(过程图见教材92页)
单片机的开发过程
设计硬件 软件编程 软件仿真调试 源代码烧入单片机 插入单片机脱机工作 模数电路/单片机硬件 MCS51汇编语言/C
计算机/MEDWIN环境
单片机第4章
中断响应及处理过程 保护断点 寻找中断源 中断处理 中断返回 保护断点和寻找中断源都是由硬件自动完成的,用户不用考虑。
4.2 MCS 51中断系统
MCS-51提供了5个中断源,2个中断优先级控制,可实现2个中断 服务嵌套。可通过程序设置中断的允许或屏蔽,设置中断的优先级。 CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位, 若查到某标志位被置位,将启动中断机制。 MCS-51的中断源 5个中断源: 外部中断源(中断标志为IE0和IE1 ) 由P3.2端口线引入,低电平或下降沿引起。
4 MCS® 51单片机中断系统
4.1 中断系统概念
4.2 MCS 51中断系统 4.3 MCS 51中断响应过程 4.4 MCS 51中断系统编程 4.5 MCS 51外部中断扩展
4.1 中断系统概念
中断是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中 止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完 毕(中断服务完成)后,CPU自动返回原程序的过程。 作用:采用中断技术可以提高CPU效率、解决速度矛盾、实现并行 工作、分时操作、实时处理、故障处理、应付突发事件,可使多项任务 共享一个资源(CPU)。 中断与子程序的最主要区别:子程序是预先安排好的,中断是随机 发生的。 中断涉及的几个环节:中断源、中断申请、开放中断、保护现场、 中断服务、恢复现场、中断返回。
EX0/EX1/ET1/ET0/ES :分别是INT0/INT1、T0/T1、串行口的中断允 许控制位。 =0 :禁止中断; =1 :允许中断。 EA:总的中断允许控制位(总开关): =0 :禁止全部中断; =1 :允许中断。
中断优先级控制寄存器IP(0B8H)
PX0/PX1:INT0/INT1优先级控制位: =0 :属低优先级; =1 :属高优先级。 PT0/PT1:T0/T1中断优先级控制位: =0 :属低优先级; =1 :属高优先级。 PS1:串行口中断优先级控制位: =0 :属低优先级; =1 :属高优先级。
单片机原理及应用第四章课后题答案
单片机原理及应用第四章课后题答案单片机原理及应用第四章课后题答案16. MCS-51单片机系统中,片外程序存储器和片外数据存储器共用16位地址线和8位数据线,为何不会产生冲突?解:数据存储器的读和写由和信号把握,而程序存储器由读选通信号把握,这些信号在规律上时序上不会产生冲突;程序存储器访问指令为MOVC,数据存储器访问指令为MO。
程序存储器和数据存储器虽然共用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,#10010100BMO @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, #80HMO @DPTR, A ; 工作方式字送8255A把握口MOV DPTR, #7FFDH ; 数据指针指向8255A 的B口MOV A, #0FH ; 置红色发光二极管亮LP1:MO @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定时。
单片机原理及应用-第四章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-3外设端口有哪两种编址方法?各有什么特点?答:微型计算机对 I/O 端口进行编址的方式有两种:单独编址和统一编址。
1.外设端口单独编址特点:(1) 需要专用 I/O 指令,实现 CPU 和外设间数据传送。
(2)I/O端口地址的独立。
2.外设端口与存储器统一编址特点: (1) 无需专用 I/O 指令(2)I/O端口地址是内存地址中的一部分。
4-4 I/O 数据有哪四种传送方式?各有什么特点?CPU 与外设之间的数据传送方式有无条件传输方式、查询方式、中断方式和 DMA 方式。
1.无条件传输方式无条件传送又称为同步传送或直接传送方式。
CPU 在与外设进行数据交换时,外设随时处于准备好的状态,这样 CPU 不必查询外设的状态,也不必等待,而是直接进行数据的输入输出。
2.查询传输方式查询传输方式也称为异步传输、条件传输方式。
采用查询方式时, CPU 每次与外设进行数据传输前,都要先读取状态端口的信息,查询外设是否准备就绪,只有在外设处于“就绪”状态时,才能向外设的数据端口发送数据或从其中读取数据,如果外设未就绪,就需要 CPU 原地循环等待外设完成准备工作,所以 CPU 的工作效率不高。
3.中断传输方式在中断传输方式中,以外设为主动方,每次外设准备好就可以向 CPU 发出一次中断请求,使 CPU 暂停当前正在执行的程序,转去与外设进行一次数据传输工作,当完成了本次数据的输入或输出后,再回到原先被打断的地方继续执行原来的程序。
中断方式可以大大提高 CPU 的效率和系统的实时性。
4. DMA 方式DMA 方式即直接存储器存取方式,是一种在DMA控制器的控制下实现的外设与存储器之间的直接数据传输方式。
在整个DMA 传输过程中,是不需要 CPU 参与的,完全是通过硬件逻辑电路用固定的顺序发地址和读写信号来实现的,数据不需要经过 CPU 而是在外设和存储器之间高速传输。
4-5 8051 内部的并行I/O 口有哪些?各有什么功能?1.P0 口P0 口的第一功能是作为通用I/O 口使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a:
- 183 -
AT89S51 单片机实验及实践教程
TH0=(65536-500)/256; TL0=(65536-500)%256; if((errorflag==1) && (rightflag==0)) { bb++; if(bb==800) { bb=0; alarmflag=~alarmflag; } if(alarmflag==1) { P0_0=~P0_0; } aa++; if(aa==800) { aa=0; P0_1=~P0_1; } second3++; if(second3==6400) { second3=0; hibitflag=0; errorflag=0; rightflag=0; cmpflag=0; P0_1=1; alarmflag=0; bb=0; aa=0; } } if((errorflag==0) && (rightflag==1)) { P0_1=0; cc++; if(cc<1000) { okflag=1; } else if(cc<2000) { okflag=0; }
- 180 -
AT89S51 单片机实验及实践教程
(5) . 把“单片机系统”区域中的 P3.6/WR、P3.7/RD 用导线连接到“独立式键盘” 区域中的 SP1 和 SP2 端子上; 密码的设定,在此程序中密码是固定在程序存储器 ROM 中,假设预设的密码 为“12345”共 5 位密码。 密码的输入问题: 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按 键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入 密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后, 才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过 程。 按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按 键识别状态时,按键禁止功能被激活,但启动的状态在 3 次密码输入不正确的 情况下发生的。
- 182 -
AT89S51 单片机实验及实践教程
digitcount=0; } P2=dispcode[digitcount]; if(funcount==1) { pslen=digitcount; templen=pslen; } else if(funcount>1) { psbuf[funcount-2]=digitcount; } } else { second3=0; } while(P3_7==0); } } } else { cmpflag=0; for(i=0;i<pslen;i++) { if(ps[i]!=psbuf[i]) { hibitflag=1; i=pslen; errorflag=1; rightflag=0; cmpflag=0; second3=0; goto a; } } cc=0; errorflag=0; rightflag=1; hibitflag=0; cmpflag=0; } } } void t0(void) interrupt 1 using 0 {
2.电路原理图
图 4.32.1
3.系统板上硬件连线
(1) . (2) . (3) . (4) . 把“单片机系统”区域中的 P0.0/AD0 用导线连接到“音频放大模块”区域中 的 SPK IN 端子上; 把“音频放大模块”区域中的 SPK OUT 端子接喇叭和; 把“单片机系统”区域中的 P2.0/A8-P2.7/A15 用 8 芯排线连接到“四路静态 数码显示”区域中的任一个 ABCDEFGH 端子上; 把“单片机系统“区域中的 P1.0 用导线连接到“八路发光二极管模块”区域 中的 L1 端子上;
- 185 -
AT89S51 单片机实验及实践教程
32.
1.实验任务
电子密码锁设计
根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就 打开,如果输入的三次的密码不正确,就锁定按键 3 秒钟,同时发现报警声,直到没有按 键按下 3 种后,才打开按键锁定功能;否则在 3 秒钟内仍有按键按下,就重新锁定按键 3 秒时间并报警。
- 181 -
AT89S51 单片机实验及实践教程
unsigned char i,j; P2=dispcode[digitcount]; TMOD=0x01; TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=1; ET0=1; EA=1; while(1) { if(cmpflag==0) { if(P3_6==0) //function key { for(i=10;i>0;i--) for(j=248;j>0;j--); if(P3_6==0) { if(hibitflag==0) { funcount++; if(funcount==pslen+2) { funcount=0; cmpflag=1; } P1=dispcode[funcount]; } else { second3=0; } while(P3_6==0); } } if(P3_7==0) //digit key { for(i=10;i>0;i--) for(j=248;j>0;j--); if(P3_7==0) { if(hibitflag==0) { digitcount++; if(digitcount==10) {
- 184 -
AT89S51 单片机实验及实践教程
else { errorflag=0; rightflag=0; hibitflag=0; cmpflag=0; P0_1=1; cc=0; oka=0; okb=0; okflag=0; P0_0=1; } if(okflag==1) { oka++; if(oka==2) { oka=0; P0_0=~P0_0; } } else { okb++; if(okb==3) { okb=0; P0_0=~P0_0; } } } }
4.程序设计内容
(1) . (2) .源自(3) .5.C 语言源程序
#include <AT89X52.H> unsigned char code ps[]={1,2,3,4,5}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; unsigned char pslen=9; unsigned char templen; unsigned char digit; unsigned char funcount; unsigned char digitcount; unsigned char psbuf[9]; bit cmpflag; bit hibitflag; bit errorflag; bit rightflag; unsigned int second3; unsigned int aa; unsigned int bb; bit alarmflag; bit exchangeflag; unsigned int cc; unsigned int dd; bit okflag; unsigned char oka; unsigned char okb; void main(void) {