单片机原理与应用技术重点程序高惠芳
单片机原理及应用chp04[1]
【例4-2】两个无符号双字节数相加.设被加数存放在内部存 储器30H(高位字节),31H(低位字节)单元,加数存放在内 部存储器40H(高位字节),41H(低位字节)单元,和存入30H (高位字节),31H(低位字节)单元. 程序如下: ORG 0000H CLR C MOV R0 ,#31H MOV R1 ,#41H MOV A ,@R0 ADD A ,@R1 MOV @R0 ,A DEC R0 DEC R1 MOV A,@R0 ADDC A,@R1 MOV @R0 , A END
;取数送A ;除数100送B中 ;商(百位数BCD码)在A中,余数在B中 ;百位数送22H ;余数送A做被除数 ;除数10送B中 ;十位数BCD码在A中,个位数在B中 ;十位数BCD码移至高4位 ;并入个位数的BCD码 ;十位,个位BCD码存人21H
分支程序的结构有两种,如图4.2所示.
图4.2 分支程序结构
(4)定义字节指令DB 格式:[标号:] DB 8位二进制数表 DB命令是从指定的地址单元开始,定义若干个8 位内存单元的内容.例如, ORG 1000H TAB; DB 23H,73, "6", "B" TABl: DB 110B 以上伪指令经汇编以后,将对从1000H开始的若干 内存单元赋值: (1000H)=23H (1001H)=49H (1002H)=36H (1003H)=42H (1004H)=06H 其中36H和42H分别是字符6和B的ASCII码,其余 的十进制数(73)和二进制数(110B)也都换算为十 六进制数了.
(5)定义字命令 DW 格式:[标号:] DW 16位二进制数表 例如, ORG 1000H TAB: DW 1234H , 0ABH , 10 汇编后: (1000H)=12H (1001H ) = 34H (1002H ) = 00H ( 1003H ) = ABH (1004H ) =00H (1005H) =0AH DB,DW伪指令都只对程序存储器起作用,不能 用来对数据存储器的内容进行赋值或进行其它初始化 的工作.
单片机原理与应用及C51编程技术 教学课件 高玉芹 第2章 AT89系列单片机的硬件体系结构n
第 2 章 AT89系列单片机的硬件体系结构
ATMEL公司是美国20世纪80年代中期成立并发展起来的 半导体公司。该公司率先将独特的Flash存储技术注入于
单片机产品中。其推出的AT89系列单片机,在世界电子技
术行业中引起了极大的反响,在国内也受到广大用户的欢 迎。 本章以AT89S51为主线叙述AT89XXX系列单片机的内部 结构、引脚功能、工作方式和时序等方面的知识,本章的
看门狗使用户的应用系统更坚固;双数据指针使数据操作更加快
捷方便;速度更高最高可使用33MHZ的晶振; • AT89LS和AT89LV系列
• 可以在更低的电压(2.7V)和更宽的范围下(2.7V~6.0V)工作,
使应用范围更加广泛。
2019/1/23 8
2.1.4 AT89系列单片机的型号编码
AT89 系列单片机的型号编码由三个部分组成,它们是前
6
2019/1/23
2.1.3 AT89系列单片机的主要品种
Atmel公司的AT89系列单片机有多种型号,但以AT89X51和AT89X52为代 表,其主要单片机品种及其特性见表2-1。
2019/1/23
7
2.1.3 AT89系列单片机的主要品种
从表2-1中可以看出,AT89系列单片机主要分为51和52两个 子系列,每个子系列都有四种型号. • 52子系列与51子系列相比不同之处: flash程序内存增至8KB,数据存储器增至256B,有3个定时器 /计数器等; • AT89S和AT89C相比新增加了以下功能: 支持在系统程序设计ISP 使生产及维护更方便;增加了片内
2
本章主要内容
2.1 AT89系列单片机概述 2.2 AT89系列单片机的结构原理
《单片机原理与应用技术》第7章
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
在程序中,函数有 种形态 函数定义,函数调用和函数说明. 种形态: 在程序中,函数有3种形态:函数定义,函数调用和函数说明. 函数定义相当于汇编中的一般子程序.函数调用相当于调用了程序 的CALL语句,要求有函数名和实参数表.函数说明是一个没有函数 体的函数定义.
C51中函数分为两大类:库函数和用户定义函数. 中函数分为两大类:库函数和用户定义函数. 中函数分为两大类 库函数是C51在库文件中已定义的函数,其函数说明在相关的头文 件中.用户函数是用户自己定义,自己调用的一类函数.
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
7.3 C51的数据与运算
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
7.2 C51的程序结构
C51程序的基本单位是函数.函数由函数说明和函数体两部分 组成.一个C源程序至少包含一个主函数,也可以是一个主函数和 若干其他函数.主函数是程序的入口;主函数中的所有语句执行完 毕,则程序结束. C51程序的一般格式如下: C51程序的一般格式如下: 程序的一般格式如下 类型 参数说明; 参数说明 { 数据说明部分; 数据说明部分 执行语句部分; 执行语句部分 } 函数名(参数表 函数名 参数表) 参数表
7.3.1 数据类型
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
7.3.2 数据的存储
1,存储类型与存储空间 ,
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
2,存储模式 ,
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
单片机的C 7.4 单片机的C语言程序设计
绪论-单片机基础知识
(4)二进制数转换成十六进制数
将二进制数转换成十六进制数的方法是,从右至左,每4位二进制
数转换为1位十六进制数,不足部分补0
例如:将二进制数110111110B转换为十六进制数
0001 1011 1110
1B E
所以110111110B=1BEH
高等教育出版社
单片机原理与应用技术
绪论 单片机基础知识
用“1”表示,低电平用“0”表示,其主要特点是:
(1) 二进制数都只由0和1两个数码符号组成,基数是2。
(2) 进位规则是“逢二进一”。一般在数的后面加字母B表 示这个数是二进制数。 对于任意的4位二进制数,可以写成如下形式:
B3B2B1B0=B3×23+ B2×22+ B1×21+ B0×20 例如:1011B= 1×23+ 0×22+ 1×21+ 1×20=11D
绪论 单片机基础知识
单片机的内部结构
1.中央处理器(CPU) CPU是单片机内部的核心部件,是一个8位的中央处理
单元,主要由运算器、控制器和寄存器阵列构成。 (1) 运算器
运算器用来完成算术运算和逻辑运算功能,它是 AT89S51内部处理各种信息的主要部件。 (2) 控制器
控制器是单片机的指挥控制部件,主要任务是识别指令, 并根据指令的要求控制单片机各功能部件,从而保证单片 机各部件能高效而协调地工作。
H3H2H1H0=H3×23+ H2×22+H1×21+ H0×20 例如:2FCBH= 2×163+ 15×162+ 12×161+ 11×160=12235D
高等教育出版社
单片机原理与应用技术
绪论 单片机基础知识
杭电单片机实验报告一
uVision4在μVision3 IDE的基础上,增加了更多大众化的功能:
·多显示器和灵活的窗口管理系统
·系统浏览器窗口的显示设备外设寄存器信息
·调试还原视图创建并保存多个调试窗口布局
·多项目工作区简化与众多的项目
JMP START
ORG 0800H
START:MOV A,#01H;即将0000 0001存入A,后面会将最右边1循环左移。
SJMP DELAY;进入延时段起点
LOOP:
RL A;从此处开始跑马灯模块。先将A循环左移
MOV P1,A;将A的值赋给端口P1的8位
SJMP DELAY;从56ms的延迟程序段再跑一遍
⑥、单击点击下图所示圆圈圈起的部分建立一个文件。也可以点击菜单“File”下面的“NEW”来新建一个文件。
⑦、之后输入程序的代码后,单击File—Save as,根据代码语言的格类型,可保存为后缀为.asm(汇编语言)和.c(C语言)的文件。
⑧、单击“Target1”前面的“+”号,并用鼠标右键点击“SourceGroup1”,界面如图10所示。在用鼠标左键点击“AddFiles to Group Source Group1...”即可把刚刚的代码文件添加到工程。最后点击左上角的编译按钮即可完成编译。之后即可进行程序的调试了。
2.实验内容
使用汇编语言完成课本P95的(2)、(5)、(8)三道题以及一个跑马灯程序。
2.1 P95-(2)
设内部RAM 5AH单元中有一个变量X,请编写计算下述函数式的程序,结果存入5BH。
设计思路:显然本题要使用分支语句,不妨使用JZ, JNB等,并通过X-10,X-15综合判断X处于哪个区间。
单片机原理与应用技术(第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语言程序编写中断程序。
最新单片机原理与应用习题参考答案(高惠芳版)
第(7)题:堆栈?SP的作用?为何要对SP重新赋值? 1)堆栈是一种数据结构,是只允许数据在其一端进出的一段存储空 间;为程序调用和中断操作而设立,用作现场保护和断点保护。 2)堆栈指针SP用来存放堆栈的栈顶地址。 3)复位后,SP的初值为07H,由于片内RAM的07H单元的后继区域分 别为工作寄存器区和位寻址区,通常这两个区域在程序中有其它重要用 途,所以用户在设计程序时,一般都将堆栈设在内部RAM的30H~7FH 地址空间的高端区域,而不设在工作寄存器区和位寻址区。
①立即寻址MOV A,#00H ②直接寻址MOV A,50H ③寄存器间接寻址MOV A,@R0 ④寄存器寻址MOV A,R5 ⑤变址寻址MOV A,@A+DPTR ⑥相对寻址SJMP 70H ⑦直接寻址或寄存器寻址CLR A 11、①ANL A,#0FCH累加器A的低2位清零,其余位不变; ②ORL A,#0C0H累加器A的高2位置1,其余位不变; ③XRL A,#0F0H累加器A的高4位取反,其余位不变; ④XRL A,#55H累加器A的第0、2、4、6位取反,其余位不变;
单片机,内部RAM分为两部分,其中地址范围00H ~ 7FH(共128B单 元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址 空间,21个特殊功能寄存器离散地分布在这个区域;对于8052系列单片 机还有地址范围为80H~FFH的高128B的静态RAM。 3)64KB的外部数据存储器地址空间:地址范围为0000H~FFFFH,包括 扩展I/O端口地址空间。
MCS-51单片机有7种寻址方式。 (1)立即寻址。操作数直接在指令中给出,它可以是二进制、十进 制、十六进制数,也可以是带单引号的字符,通常把这种操作数称为立
单片机原理与应用技术重点程序高惠芳
• SWAP A
; 得到高位BCD码
• ADD A,#30H ; 转换为高位ASCII码
• MOV 22H,A
; 保存高位ASCII码
• SJMP $
• END
10
补充举例:三字节无符号数相加,其中被 加数在内部RAM的50H、51H和52H单元中; 加数在内部RAM的53H、54H和55H单元中; 要求把相加之和存放在50H、51H和52H单 元中进位存放在位寻址区的20H单元最低 位中(即20H.0)。
1
[例3-2]设内部RAM中30H单元的内容为40H ,40H单元的内 容为10H,P1口作输入口,其输入数据为0CAH,程序及执行 后的结果如下:
MOV R0,#30H ;单元地址30H送R0中
MOV A ,@R0 ;R0 间址,将30H单元内容送A
MOV R1 ,A
;A送R1
MOV B ,@R1 ;R1间址,将40H单元内容送B
13
• 例4.3.3 求符号函数的值。已知片内RAM的40H单元 内有一自变量X,编制程序按如下条件求函数Y的值, 并将其存入片内RAM的41H单元中。见P65
1 X>0
开始
Y=
0 X=0YX=来自?-1 X<0NY X>0?
N
Y0
Y1
Y -1
14
结束
• ORG 1000H
• START: MOV A, 40H ; 将X送入A中
•
;到LOOP处循环,否则,循环结束
•
SJMP $
•
END
18
• 例4.3.6 编制程序将片 内RAM的30H~4FH 单元中的内容传送至 片外RAM的2000H开 始的单元中。(见 P70)
单片机原理与应用技术重点程序(高惠芳)
指针
单片机程序的基本结构
主函数
程序的入口点。
头文件
包含程序中用到的库函数和定义。
程序主体
实现具体功能的代码块。
单片机程序的流程控制
01
顺序结构
程序按照代码顺序执行。
条件结构
02
03
循环结构
根据条件判断执行不同的代码块。
重复执行某段代码直到满足特定 条件。
04
单片机应用技术重点
单片机中断技术
中断概念
04
智能仪表系统的发展趋势是更加小型化、集成化、智能化,能够更好 地满足工业生产的需求。
机器人控制系统
01 02 03 04
机器人控制系统是利用单片机技术实现机器人的智能化控制,从而提 高机器人的自主性和适应性。
机器人控制系统可以实现的功能包括:自主导航、目标识别、人机交 互等。
单片机在机器人控制系统中主要负责接收和处理各种传感器信号,控 制机器人的运动和姿态,并与上位机进行通信。
02
单片机硬件结构
单片机的基本组成
运算器
用于执行算术和逻辑运算。
控制器
控制单片机各部件的协调工作。
存储器
存储程序和数据。
定时器/计数器
用于产生定时信号或计数。
单片机的中央处理器
控制单元
负责指令的译码和执行。
寄存器组
存储中间结果和数据。
算术逻辑单元
执行算术和逻辑运算。
总线接口
协调各部件之间的数据传输。
等领域。
单片机的应用领域
总结词
单片机广泛应用于工业控制、智能仪表、智能家居等 领域,具有控制、检测、报警等多种功能。
详细描述
由于单片机具有体积小、功耗低、可靠性高等特点, 因此广泛应用于工业控制领域,如自动化生产线控制 、电机驱动控制等。此外,在智能仪表领域,单片机 也得到了广泛应用,如智能水表、智能电表等。在智 能家居领域,单片机可以实现家庭安全监控、智能照 明控制等功能。同时,在汽车电子领域,单片机也发 挥着重要作用,如汽车发动机控制、车身控制系统等 。
项目教学法在“单片机原理与应用技术”课程的深化改革
54海外文摘随着智能化时代的爆炸,单片机原理与应用技术这门课在机电专业中越来越重要,高职类院校的学生掌握单片机技术更是势在必得的发展趋势。
单片机原理与应用技术是一门理论和实践相结合的课程,而且单片机原理与应用技术的学习对学生的要求很高,不仅要熟悉电子学,还要精通编程语言。
针对工科课程的特点,项目教学法这几年已慢慢地引入高职高专类工科院校的课堂中,并解决了传统教学法遇到的瓶颈,让学生通过项目教学法不再仅仅局限于课本,而是接近行业的发展,同时对理论知识的接受也更容易,改变了以往学生学习知识的思维方式。
1 项目教学法的应用项目教学法以某个项目的教学任务和教学目标作为起点,让学生在课堂上以完成某个项目作为驱动过程,引导学生学习具备完成这个项目的知识,寻找和学习要完成这个项目要掌握的技能,教师在这个过程中更多的是引导和分析,帮助学生理清思路,引导学生学习技能,让学生自己综合所学知识和技能独立完成这个项目,所以学生不仅是学习了理论知识,更是学会了如何完成和开发一个项目,真正地做到以学生为核心的项目教育法。
1.1 项目内容和模式的选择目前高职高专类单片机原理与应用技术的教材编写多是以项目形式编写,普遍以二极管,数码管,矩阵按键,电动机,显示屏,串口输入输出,串行通信,温度传感器,模数转换等模块作为51单片机的入门课程。
通过本课程的学习,学生能够掌握以MCS-51系列为主的单片机的基本结构、指令系统、存储系统及输入输出接口电路、中断系统、系统扩展等方面知识。
在项目教学法下,根据单片机原理与应用技术的学习目标,这门课程分成了九个项目模块,每个模块分给适当的学时。
每个项目模块,我们根据现在行业的发展情况和人才技能的要求,选择仿真法和实验法相结合来进行课堂教学。
站在智能化的时代队列里,对高职高专的学生的要求,除了掌握扎实的技能实践能力,还需要拥有项目开发的能力,所以仿真法的重要性不明而喻。
而且对某些项目,真实的设备无法支撑的时候,仿真法能验证这个项目的电路原理图和编程代码是否可行,便于激励学生的学习和研发能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
; 取低4位BCD码a0
• ADD A, R0
; 求和10×a1+ a0
• MOV 40H, A
; 结果送入40H保存
• SJMP $
; 程序执行完,“原地踏步”
• END
• 例4.3.2 将内部RAM中20H单元的压缩 BCD码拆开,转换成相应的ASC码,存 入21H、22H,高位存22H.(P64)
•
ORG 0000H
•
AJMP main
•
ORG 0100H
• MAIN: MOV 20H,#12H
•
MOV 21H,#34H
•
MOV 30H,#23H
•
MOV 31H,#45H
•
MOV A,20H
•
ADD A,30H
•
MOV 20H,A
•
MOV A,21H
•
ADDC A,31H
•
MOV 21H,A
① MOV 02H ,01H
; 直接寻址 3字节 2周期
② MOV A ,01H
;直接寻址 +寄存器寻址
MOV 02H , A
;4字节 2周期
③ MOV A , R1
; 寄存器寻址 2字节 2周期
MOV R2 , A
④ MOV R0 ,#01H
; 4字节 3周期
MOV 02H ,@R0
; 间接寻址
⑤ PUSH 01H
; 栈操作 4字节 4周期
POP 02H
第三种方法占存储空间少,执行周期短。
补充:设20H,21H单元存放一个16位2进制数X1(高8位存 于21H单元) ;30H,31H单元存放一个16位2进制数 X2,(高8位存于31H单元);求X1+X2,结果存放于20H,21H。 (两数之和不超过16位)
[例3-2]设内部RAM中30H单元的内容为40H ,40H单元的内 容为10H,P1口作输入口,其输入数据为0CAH,程序及执行 后的结果如下:
MOV R0,#30H ;单元地址30H送R0中
MOV A ,@R0 ;R0 间址,将30H单元内容送A
MOV R1 ,A
;A送R1
MOV B ,@R1 ;R1间址,将40H单元内容送B
• ANL A, #0F0H
; 取高4位BCD码a1
• SWAP A
; 高4位与低4位换位
• MOV B, #0AH
; 将二进制数10送入B
• MUL AB
; 将10×a1送入A中
• MOV R0, A
; 结果送入R0中保存
• MOV A, 30H
; 再取两位BCD压缩码a1a0送A
• ANL A, #0FH
分析: 除最低字节可以使用ADD指令之外, 其它字节相加时要把低字节的进位考虑进去, 因此使用ADDC指令.
MOV 00H,C #20H
分支程序是通过转移指令实现的
一、单分支程序 使用条件转移指令实现,即根据条件对程序
的执行进行判断,满足条件则进行程序转移,否 则程序顺利执行。 可实现单分支程序转移的指令有:
传送类指令举例:
[例3-1]已知(R0)=30H,问执行如下程序,A、R4、
30H和31H单元的内容是什么。
MOV A , #10H
(A)=10H
MOV R4 ,#36H
(R4)=36H
MOV @R0 ,#7AH
(30H)=7AH
MOV 31H ,#01H
(31H)=01H
解:8051执行上述指令后的结果为:
开始
Y=0 X=0源自YX=0?-1 X<0
NY X>0?
N
Y0
Y1
Y -1
结束
• ORG 1000H
• START: MOV A, 40H ; 将X送入A中
•
JZ COMP
; 若A为0,转至COMP处
•
JNB ACC.7, POST ; 若A第7位不为1(X为正数),
;则程序转到 POST处,
;否则(X为负数)程序往下执行
JZ、JNZ、CJNE、DJNZ 等 还有以位状态作为条件进行程序分支的指令:
JC、JNC、JB、JNB和JBC (1等)单分支结构举例
• 例4.3.3 求符号函数的值。已知片内RAM的40H单元 内有一自变量X,编制程序按如下条件求函数Y的值, 并将其存入片内RAM的41H单元中。见P65
1 X>0
MOV @R1,P 1 ;将P1内容送40H单元
MOV P2 , P1 ;将P1内容送P2
执行结果:(R0)=30H , (R1)=40H , (A)=40H , (B) =10H ,(P1)=0CAH ,(40H)=0CAH ,
(P2)=0CAH
[例3-5] 已知外部RAM 2020H单元中有一个数X, 内部
•
SJMP $
•
END
• #1234H+#2345H = #3579H
答案
例4.3.1 将片内RAM 30H单元中的两位
压缩BCD码转换成二进制数送到片内
RAM 40H单元中.(P63)
开始
(A )高位 BCD 码
将高位 BCD 码乘 10
与低位 BCD 码相加
存结果
结束
• ORG 1000H
• START:MOV A, 30H ; 取两位BCD压缩码a1a0送A
• SWAP A
; 得到高位BCD码
• ADD A,#30H ; 转换为高位ASCII码
• MOV 22H,A
; 保存高位ASCII码
• SJMP $
• END
补充举例:三字节无符号数相加,其中被 加数在内部RAM的50H、51H和52H单元 中;加数在内部RAM的53H、54H和55H 单元中;要求把相加之和存放在50H、51H 和52H单元中进位存放在位寻址区的20H单 元最低位中(即20H.0)。
•
MOV A, #0FFH ; 将1(补码)送入A中
•
SJMP COMP
; 程序转到COMP处
• POST: MOV A, #01H
; 将+1送入A中
RAM 20H单元一个数Y,试编出可以使它们互相交换的程
序。
指向外部
解: MOV P2 , #20H MOV R1 , #20H
RAM 2020H单元
MOVX A , @R1 XCH A , @R1 MOVX @R1 ,A
指向内部
RAM 20H单元
SJMP $
END
[例3-7] 把01H单元内容送02H单元,有几种不同的实现方法。
• ORG 1000H
• START:MOV A,20H ; 取压缩BCD码
• ANL A,#0FH ; 取低位BCD码
• ADD A,#30H ; 转换为低位ASCII码
• MOV 21H,A
; 保存低位ASCII码
• MOV A,20H
; 重新取压缩BCD码
• ANL A,#0F0H ; 分离高位BCD码