电子教案微控制器原理与应用技术.doc

上传人:飞****2 文档编号:50974245 上传时间:2022-10-17 格式:DOC 页数:11 大小:61.50KB
返回 下载 相关 举报
电子教案微控制器原理与应用技术.doc_第1页
第1页 / 共11页
电子教案微控制器原理与应用技术.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《电子教案微控制器原理与应用技术.doc》由会员分享,可在线阅读,更多相关《电子教案微控制器原理与应用技术.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、电子教案微控制器原理与应用技术第四章 课 程 名 称 微控制器原理与应用技术所 属 学 校 山东英才学院 所在院系 计算机电子信息工程学院 课程层次(专) 专 科 (高 职 高 专 课程类型 理论课(含实践)实践(验)课所属一级学科名称 计算机所属二级学科名称 自动化课 程 负 责 人 刘捷联系电话 0531-山东英才学院第4章 汇编语言程序设计 教学要求1掌握80C51汇编,语言语句结构的基本格式。2了解伪指令的功能和应用。3熟悉汇编程序设计的步骤和基本方法。4熟悉顺序程序、分支程序、循环程序、查表程序、散转程序。 教学手段 多媒体课件 教学重点 微控制器内部结构、存储空间配置和功能、片内R

2、AM结构和功能 教学课时 10学时 教学内容:4-1 汇编语言一. 汇编语言及其语句结标号:操作码 目的操作数,源操作数;注释二. 伪指令在汇编时起控制作用,自身并不产生机器码,而仅是为汇编服务的一些指令,称为伪指令。伪指令不属于80C51指令系统。常用的伪指令有以下几种: 起始伪指令 ORG(Origin)格式:ORG 16位地址 结束伪指令 END格式:功能:汇编语言源程序的结束标志。在END后面的指令,汇编程序不再处理。 等值伪指令 EQU(Equate)格式:字符名称 EQU 数据或汇编符号 数据地址赋值伪指令 格式:字符名称 DATA 表达式功能:将一个数据或特定的汇编符号赋予规定的

3、字符名称。 定义字节伪指令DB(Define Byte)格式:DB 8位二进制数表功能:从指定的地址单元开始,定义若干个8位内存单元的数据。数据与数据之间用“,”分割。 定义字伪指令DW(Define Word)格式:DW 16位二进制数表功能:从指定的地址单元开始,定义 若干个16位数据。 定义位地址伪指令格式:字符名称 BIT 位地址功能:将位地址赋予所规定的字符名称。三.汇编将汇编语言源程序转换为计算机所能识别的机器语言代码程序的过程称为汇编。汇编可分为: 手工汇编 计算机汇编四. 程序设计的基本方法编写程序要求: 不仅要完成规定的功能任务,而且还要求:执行速度快、占用内存少、条理清晰、

4、阅读方便、便于移植、巧妙而实用。一般应按以下几个步骤进行: 分析问题,确定算法或解题思路 画流程图 编写源程序 汇编和调试4-2 汇编语言程序设计举例一. 顺序程序顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。顺序程序结构虽然比较简单,但也能完成一定的功能任务,是构成复杂程序的基础。根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。80C51指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。【例】 已知16位二进制负数存放在R1R0中,试求其补码,并将结果存在R3R2中解:二进制负数的求补方法可归结为“求反加1”,符号位不变。利用CPL指令实现求反;

5、加1时,则应低8位先加1,高8位再加上低位的进位。注意这里不能用INC指令,因为INC指令不影响标志位。程序如下:CONT: MOV A,R0;读低8位CPL A;取反ADD A,#1;加1MOV R2,A;存低8位MOV A,R1;读高8位CPL A;取反ADDC A,#80H;加进位及符号位MOV R3,A;存高8位RET;二.分支程序根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。 80C51指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。 S0单独按下, 红灯亮,其余灯灭; S1单独按下, 绿灯亮,其余灯灭; 其余情况,黄灯亮。解:程序如下SGNL:A

6、NL P1,#B;红绿黄灯灭 ORL P1,#B;置P1.0、P1.1输入态, P1.5P1.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

7、 ;转循环RED: SETB P1.2 ;红灯亮 CLR P1.3 ;绿灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 课堂练习题: 电路及灯亮灭要求同上述【例】题,其中第3、4两条指令JNB P1.0和JNB P1.1按下列要求修改,试重新编程。JBP1.0,JBP1.1,JBP1.0, JNB P1.1,JNB P1.0, JBP1.1,三. 循环程序循环程序一般包括以下几个部分: 循环初值; 循环体; 循环修改; 循环控制;以上四部分可以有两种组织形式,其结构如图4-6所示. 【例】 编制一个循环闪烁灯的程序。设80C51微控制器的P1口作为输出口,经驱动电路74LS240

8、(8反相三态缓冲/驱动器)接8只发光二极管,如图4-8所示。当输出位为“1”时,发光二极管点亮,输出位为“0”时为暗。试编程实现:每个灯闪烁点亮10次,再转移到下一个灯闪烁点亮10次,循环不止。 解:程序如下:FLASH:MOV A,#01H;置灯亮初值FSH0: MOV R2,#0AH;置闪烁次数FLOP: MOV P1,A;点亮 LCALL DY1s;延时1s MOV P1,#00H;熄灭 LCALL DY1s;延时1s DJNZ R2,FLOP;闪烁10次 RL A;左移一位 SJMP FSH0;循环 RET;【例】设Xi均为单字节数,并按顺序存放在以50H为首地址的内RAM存储单元中,

9、数据长度(个数)N存在R2中,试编程求和S=X1+X2+XN,并将S(双字节)存放在R3R4中,(设S65536)。解:程序如下: 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个数据累加

10、完否? 循环控制 RET ;退出循环 退出循环 【例】编写延时10ms子程序,fosc=12MHz。 解:fosc=12MHz,一个机器周期为1ms。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+220+1+21ms/机周=10063ms10ms【课堂练习题】 按下列要求编写延

11、时子程序: 延时2ms,fosc=6MHz; 延时5ms,fosc=12MHz; 延时10s,fosc=12MHz; 设80C51微控制器的P1口作为输出口,经驱动电路74LS240(8反相三态缓冲/驱动器)接8只发光二极管,如图4-8所示。当输出位为1时,发光二极管点亮,输出位为0时为暗。试编程实现:每个灯闪烁点亮10次,再转移到下一个灯闪烁点亮10次,循环不止。 FLASH:MOV A,#01H;置灯亮初值FSH0: MOV R2,#0AH;置闪烁次数FLOP: MOV P1,A;点亮 LCALL DY1s;延时1s MOV P1,#00H;熄灭 LCALL DY1s;延时1s DJNZ

12、R2,FLOP;闪烁10次 RL A;左移一位 SJMP FSH0;循环 RET;【课堂练习题】根据图4-8电路,设计灯亮移位程序,要求8只发光二极管每次点亮一个,点亮时间为250ms,顺序是从下到上一个一个地循环点亮。设fosc=6MHz。【例】已知P1口数据每隔10ms刷新一次,试求其1s内的平均值, 平均值存30H。解:本题需求100个数据的平均值, 一般有两种方法: 一种是全部累加后再平均; 另一种是边平均边累加, 现给出两种方法的程序。AVRG1: MOV R2,#0 ;低8位累加寄存器清0 MOV R3,#0 ;高8位累加寄存器清0 MOV R4,#100 ;置平均次数ALOP:

13、MOV A,P1;读P1口数据 ADD A,R2;低8位累加 MOV R2,A;回存 CLR A;高8位与进位累加 ADDC A,R3; MOV R3,A;回存 LCALL DY10ms ;延时10ms DJNZ R4,ALOP;判100次累加完否?未完继续 MOV A,R3;100次累加完,求平均值,被除数A、B MOV B,R2; MOV R0,30H ;置商间址 MOV R6,#0;置除数100,除数R6R5 MOV R5,#100; LCALL SUM;(A、B)(R6、R5)= 商 R0, 余数A CJNE A,#50,NEXT;四舍五入NEXT: JC GRET;C=1,50, 舍

14、 INC 30H;C=0,50, 入GRET: RET;AVRG2:MOV 30H,#0;商累加寄存器清0MOV31H,#0;余数累加寄存器清0 MOVR4,#100;置平均次数ALOP:MOVA,P1;读P1口数据 MOVB,#100;置除数(平均次数)DIVAB;P1口数据除以100ADDA,30H;商累加MOV 30H,A;回存MOV A,B;ADDA,31H;余数累加MOV31H,A;回存CLRC;SUBBA,#100;JCGON;余数累加100,余数累加寄存器不变INC30H;余数累加100, 商累加寄存器+1MOV31H,A;减去100后差余数累加寄存器GON: LCALLDY10

15、ms;延时10msDJNZR4,ALOP ;判100次累加完否?未完继续MOVA,31H;100次累加完毕,余数累加四舍五入CJNEA,#50,NEXT;NEXT:JCGRET;C=1,50, 舍INC30H;C=0,50, 入GRET:RET ;【课堂练习题】已知某微控制器系统每隔20ms测一次温度,8位温度A/D值存在特殊功能寄存器SBUF中,试分别求其1s和1分内的平均值, 分别存30H和31H。当用PC作基址寄存器时,其表格首地址与PC值间距不能超过256字节,且编程要事先计算好偏移量,比较麻烦。因此,一般情况下用DPTR作基址寄存器。解:编程如下: CHAG:MOV DPTR,#TA

16、BD;置共阴字段码表首址MOV A,30H ;读显示数字 MOVC A,A+DPTR ;查表,转换为显示字段码 MOV 30H,A ;存显示字段码 RET ;TABD:DB 3FH,06H,5BH,4FH,66H;04共阴字段码表DB 6DH,7DH,07H,7FH,6FH;59共阴字段码表四. 查表程序用于查表的指令有两条: MOVC A,A+DPTR MOVC A,A+PC当用DPTR作基址寄存器时,查表的步骤分三步: 基址值(表格首地址)DPTR; 变址值(表中要查的项与表格首地址之间的间隔字节数)A; 执行MOVC A,A+DPTR。当用PC作基址寄存器时,其表格首地址与PC值间距不能

17、超过256字节,且编程要事先计算好偏移量,比较麻烦。因此,一般情况下用DPTR作基址寄存器。【例】 在微控制器应用系统中,常用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;04共D

18、B 6DH,7DH,07H,7FH,6FH;59共阴字段码表【例】 用查表程序求040之间整数的立方。已知该整数存在内RAM 30H中,查得立方数存内RAM 30H(高8位)31H。已知立方表(双字节)首地址为TAB。解:编程如下:CUBE:MOV DPTR,#TAB ;置立方表首址MOV A,30H ;读数据ADD A,30H ;数据2AMOV 30H,A ;暂存立方表数据序号 MOVC A, A+DPTR;读立方数据高8位XCH A,30H ;存立方数据高8位,立方表数据序号AINC A ;指向立方数据低8位MOVC A,A+DPTR ;读立方数据低8位 MOV 31H,A ;存立方数据低

19、8位RET ;TAB: DW 0,0,0,1,0,8,0,27,0,64 ;040立方表 DW 0,125,0,216,0FAH,00H;说明:数据2A原因是立方表数据为双字节【课堂练习题】 已知8位显示数字已存入首址为30H的内RAM中,试将其转换为共阴显示字段码,存入首址为40H的内RAM中。五. 散转程序散转程序是一种并行多分支程序。【例】 微控制器四则运算系统。在微控制器系统中设置四个运算命令键,它们的键号分别为0、1、2、3。当其中一个键按下时,进行相应的运算。操作数由P1口和P3口输入,运算结果仍由P1口和P3口输出。具体如下:P1口输入被加数、被减数、被乘数和被除数,输出运算结果

20、的低8位或商;P3口输入加数、减数、乘数和除数,输出进位(借位)、运算结果的高8位或余数。键盘号已存放在30H中。解:程序如下:PRGM: MOV P1,#0FFH ;P1口置输入态 MOV P3,#0FFH ;P3口置输入态 MOV DPTR,#TBJ ;置表首地址 MOV A,30H ;读键号 RL A ;键号2A ADD A,30H ;键号3A JMP A+DPTR ;散转TBJ: LJMP PRGM0 ;转PRGM0(加法) LJMP PRGM1 ;转PRGM1(减法) LJMP PRGM3 ;转PRGM3(除法) LJMP PRGM2 ;转PRGM2(乘法)PRGM0: MOV A,

21、P1 ;读加数 ADD A,P3 ;P1+P3 MOV P1,A ;和P1 CLR A ; ADDC A,#00H ;进位A MOV P3,A ;进位P3 RET ; PRGM1: MOV A,P1 ;读被减数 CLR C ; SUBB A,P3 ;P1-P3 MOV P1,A ;差P1 CLR A ; RLC A ;借位A MOV P3,A ;借位P3 RET ;PRGM2: MOV A,P1 ;读被乘数MOV B,P3 ;置乘数 MUL AB;P1P3 MOV P1,A;积低8位P1 MOV P3,B;积高8位P3 RET;PRGM3: MOV A,P1 ;读被除数 MOV B,P3 ;置除数 DIV AB;P1P3 MOV P1,A ;商P1 MOV P3,B ;余数P3 RET ;说明:由于LJMP为3字节指令,因此键号需先乘3, 以便转到正确的位置。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁