《电子教案单片机原理与应用技术.docx》由会员分享,可在线阅读,更多相关《电子教案单片机原理与应用技术.docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载电子教案 单片机原理与应用技术可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 1 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载第1章汇编语言程序设计80C51 汇编,语言语句结构的基本格式伪指令的功能和应用汇编的概念程序设计的步骤和基本方法次序程序分支程序循环程序查表程序散转程
2、序 1-1汇编语言一. 汇编语言及其语句结标号:操作码目的操作数,源操作数。注释二. 伪指令在汇编时起掌握作用,自身并不产生气器码,而仅是为汇编服务的一些指令,称为伪指令。伪指令不属于80C51 指令系统。常用的伪指令有以下几种: 起始伪指令ORGOrigin格式: ORG16 位的址 终止伪指令END格式:功能:汇编语言源程序的终止标志。在 END 后面的指令,汇编程序不再处理。 等值伪指令EQU ( Equate)格式:字符名称EQU数据或汇编符号 数据的址赋值伪指令格式:字符名称DATA表达式功能:将一个数据或特定的汇编符号给予规定的字符名称。 定义字节伪指令DB ( Define By
3、te )格式: DB8 位二进制数表功能:从指定的的址单元开头,定义如干个 8 位内存单元的数据。数据与数据之间用“, ”分割。 定义字伪指令DW ( Define Word )格式: DW16 位二进制数表功能:从指定的的址单元开头,定义如干个 16 位数据。 定义位的址伪指令格式:字符名称BIT位的址功能:将位的址给予所规定的字符名称。三.汇编将汇编语言源程序转换为运算机所能识别的机器语言代码程序的过程称为汇编。汇编可分为: 手工汇编可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 2 页,共 11 页 - - - - - - -
4、 - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载 运算机汇编四. 程序设计的基本方法编写程序要求:不仅要完成规定的功能任务,而且仍要求:执行速度快、占用内存少、条理清楚、阅读便利、便于移植、奇妙而有用。一般应按以下几个步骤进行: 分析问题,确定算法或解题思路 画流程图 编写源程序 汇编和调试可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 3 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精
5、品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载 1-2汇编语言程序设计举例一. 次序程序次序程序是指按次序依次执行的程序,也称为简洁程序或直线程序。次序程序结构虽然比较简洁,但也能完成肯定的功能任务,是构成复杂程序的基础。依据不同条件转向不同的处理程序,这种结构的程序称为分支程序。80C51 指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。【例】已知 16 位二进制负数存放在R1R0 中,试求其补码,并将结果存在R3R2中解:二进制负数的求补方法可归结为“求反加 1”,符号位不变。利用 CPL 指令实现求反。加
6、1 时,就应低 8 位先加 1,高 8 位再加上低位的进位。留意这里不能用 INC 指令,由于INC 指令不影响标志位。程序如下:CONT:MOVA,R0;读低 8 位CPLADDA;取反A,#1; 加 1MOV MOV CPL ADDC MOVRETAR2,A A,R1;取反A,#80H R3,A;存低 8 位;读高 8 位;加进位及符号位;存高 8 位二.分支程序依据不同条件转向不同的处理程序,这种结构的程序称为分支程序。80C51 指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。 S0 单独按下,红灯亮 ,其余灯灭。 S1 单独按下,绿灯亮 ,其余灯灭。 其余情形,
7、黄灯亮。可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 4 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载解:程序如下SGNL:ANLP1,#11100011B;红绿黄灯灭ORLP1,#00000011B; 置 P1.0、P1.1 输入态 , P1.5 P1.7 状态不变 SL0: JNBP1.0,SL1;P1.0=0,S0 未按下 ,转判 S1JNBP1.1,RED;P1.0=1,S
8、0 按下 ; 且 P1.1=0,S1 未按下 ,转红灯亮 YELW:SETBP1.4;黄灯亮CLR P1.2 ; 红 灯 灭CLR P1.3 ; 绿 灯 灭SJMP SL0 ; 转 循 环SL1: JNBP1.1,YELW;P1.0=0,S0 未按下 ;P1.1=0,S1 未按下 ,转黄灯亮 GREN:SETBP1.3;绿灯亮CLRP1.2; 红灯灭 CLRP1.4; 黄灯灭 SJMPSL0; 转循环 RED: SETBP1.2; 红灯亮 CLRP1.3; 绿灯灭 CLR P1.4; 黄灯灭 SJMP SL0; 转循环课堂练习题:电路及灯亮灭要求同上述【例】题,其中第3、4 两条指令JNBP1
9、.0 和 JNBP1.1 按以下要求修改,试重新编程。JBP1.0, .- JBP1.1, .-JBP1.0, .- JNBP1.1, .-JNBP1.0, .- JBP1.1, .-可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 5 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载三. 循环程序循环程序一般包括以下几个部分: 循环初值。 循环体。 循环修改。 循环掌握。以上四部分可以有
10、两种组织形式,其结构如图4-6 所示 .【例】 编制一个循环闪耀灯的程序。设 80C51 单片机的 P1 口作为输出口,经驱动电路 74LS2408 反相三态缓冲 /驱动器 接 8 只发光二极管,如图 4-8 所示。当输出位为“ 1”时,发光二极管点亮,输出位为“ 0”时为暗。试编程实现:每个灯闪耀点亮 10 次,再转移到下一个灯闪耀点亮 10 次,循环不止。解:程序如下:FLASH:MOVA,#01H ;置灯亮初值 FSH0: MOV R2,#0AH ;置闪耀次数FLOP: MOV P1,A ; 点 亮LCALLDY1s;延时 1s MOVP1,#00H;熄灭 LCALLDY1s;延时 1s
11、DJNZR2,FLOP;闪耀 10 次RLA;左移一位可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 6 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载SJMPFSH0;循环 RET;【例】设Xi 均为单字节数,并按次序存放在以50H 为首的址的内RAM 储备单元中,数据长度(个数) N 存在 R2 中,试编程求和S=X1+X2+ +XN ,并将 S(双字节) 存放在 R3R4中,(设
12、 S 65536)。解:程序如下:SXN: MOVR2,#N。置数据长度循环次数 MOVR3,#00H。和单元 高 8 位清 0 MOVR4,#00H。和单元 低 8 位清 0 MOVR0,#50H。求和数据区首址LOOP:MOVA,R4。读前次低8 位和 ADDA,R0。低 8 位累加 MOVR4,A。存低 8 位和 CLRA。ADDCA,R3。高 8 位加进位MOVR3,A。存高 8 位和INCR0。指向下一数据循环修改DJNZR2,LOOP。判 N 个数据累加完否?循环掌握RET。退出循环退出循环【例】编写延时10ms 子程序 ,fosc=12MHz 。解:fosc=12MHz ,一个机
13、器周期为1s。 DY10ms:MOVR6,#20; 置外循环次数 DLP1:MOVR7,#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+2 1s/机周 =10063s 10ms【课堂练习题】 按以下要求编写延时子程序: 延时 2ms, fosc=6MHz 。 延时 5ms, fosc=12MHz 。 延 时 10s,fos
14、c=12MHz 。设 80C51 单片机的P1 口作为输出口,经驱动电路74LS2408 反相三态缓冲/驱动器 接 8 只发光二极管,如图4-8 所示。当输出位为 . 1.时,发光二极管点亮,输出位为. 0.时为暗。试编程实现:每个灯闪耀点亮10 次, 再转移到下一个灯闪耀点亮10 次,循环不止。FLASH:MOVA,#01H ;置灯亮初值 FSH0: MOV R2,#0AH ;置闪耀次数FLOP: MOV P1,A ; 点 亮LCALLDY1s;延时 1s MOVP1,#00H;熄灭 LCALLDY1s;延时 1s可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - -
15、 - - - - - - -第 7 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载DJNZR2,FLOP;闪耀 10 次RLA;左移一位 SJMPFSH0;循环RET;【课堂练习题】依据图 4-8 电路,设计灯亮移位程序,要求8 只发光二极管每次点亮一个,点亮时间为 250ms,次序是从下到上一个一个的循环点亮。设fosc=6MHz 。【例】已知P1 口数据每隔10ms 刷新一次,试求其1s 内的平均值 , 平均值存30H 。解:此题需求100
16、个数据的平均值,一般有两种方法:一种是全部累加后再平均。另一种是边平均边累加, 现给出两种方法的程序。AVRG1: MOVR2,#0;低 8 位累加寄存器清0MOVR3,#0;高 8 位累加寄存器清0MOVR4,#100;置平均次数ALOP:MOVA,P1;读 P1 口数据ADDA,R2;低 8 位累加MOVR2,A;回存CLRA;高8 位与进位累加ADDCA,R3;MOVLCALLR3,ADY10ms;回存;延时 10msDJNZR4,ALOP;判100 次累加完否?未完连续MOVA,R3;100 次累加完 ,求平均值 ,被除数 A 、BMOVB,R2;MOVR0,30H;置商间址MOVR6
17、,#0;置除数 100,除数 R6R5MOVR5,#100;LCALLSUM;A 、B R6 、R5=商 R0, 余 数 ACJNEA,#50,NEXT;四舍五入NEXT:JCGRET;C=1, 50, 舍INC30H;C=0, 50, 入GRET:RET;AVRG2:MOV30H,#0;商累加寄存器清0MOV31H,#0;余数累加寄存器清0 MOVR4,#100;置平均次数ALOP:MOVA,P1;读 P1 口数据MOVB,#100;置除数 平均次数 DIV AB;P1 口数据除以100ADDA,30H;商累加可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - -
18、 - - - - - -第 8 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载MOV30H,A;回存MOVA,B;ADDA,31H;余数累加MOV31H,A;回存 CLR C;SUBBA,#100;JCGON;余数累加 100,余数累加寄存器不变 INC 30H;余数累加 100, 商累加寄存器 +1MOV31H,A;减去 100 后差余数累加寄存器GON:LCALLDY10ms;延时 10msDJNZR4,ALOP;判 100 次累加完否?未完
19、连续 MOVA,31H;100 次累加完毕 ,余数累加四舍五入 CJNEA,#50,NEXT;NEXT:JCGRET;C=1, 50, 舍INC 30H;C=0, 50, 入GRET:RET;【课堂练习题】已知某单片机系统每隔20ms 测一次温度,8 位温度 A/D 值存在特别功能寄存器SBUF 中,试分别求其1s 和 1 分内的平均值 , 分别存 30H 和 31H 。当用 PC 作基址寄存器时,其表格首的址与PC 值间距不能超过256 字节, 且编程要事先运算好偏移量,比较麻烦。因此,一般情形下用DPTR 作基址寄存器。解:编程如下:CHAG:MOVDPTR,#TABD; 置共阴字段码表首
20、址MOVA,30H; 读显示数字MOVCA,A+DPTR ; 查表 ,转换为显示字段码 MOV30H,A;存显示字段码RET;TABD:DB 3FH,06H,5BH,4FH,66H;04 共阴字段码表DB 6DH,7DH,07H,7FH,6FH;5 9 共阴字段码表四. 查表程序用于查表的指令有两条:MOVCA,A+DPTR MOVCA,A+PC当用 DPTR 作基址寄存器时,查表的步骤分三步: 基址值(表格首的址)DPTR 。 变址值(表中要查的项与表格首的址之间的间隔字节数)A 。 执行 MOVCA , A+DPTR 。当用 PC 作基址寄存器时,其表格首的址与PC 值间距不能超过256
21、字节,且编程要事先运算好偏移量,比较麻烦。因此,一般情形下用DPTR 作基址寄存器。【例】在单片机应用系统中,常用LED数码管显示数码,但显示数字 9与显示数字编码并不相同,需要将显示数字转换为显示字段码,通常是用查表的方法。现要求将30H 中可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 9 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载的显示数字转换为显示字段码并存入30H 。已知
22、共阴字段码表首址为TABD 。解:编程如下:CHAG:MOVDPTR,#TABD; 置共阴字段码表首址MOVA,30H; 读显示数字MOVCA,A+DPTR ; 查表 ,转换为显示字段码 MOV30H,A;存显示字段码RET;TABD:DB 3FH,06H,5BH,4FH,66H;04 共DB 6DH,7DH,07H,7FH,6FH;5 9 共阴字段码表【例】用查表程序求0 40 之间整数的立方。已知该整数存在内RAM30H 中,查得立方数存内 RAM 30H (高 8 位) 31H 。已知立方表 双字节 首的址为TAB 。解:编程如下:CUBE:MOVDPTR,#TAB ; 置立方表首址MO
23、V A,30H; 读数据ADD A,30H; 数据 2AMOV30H,A; 暂存立方表数据序号 MOVCA, A+DPTR; 读立方数据高8 位XCHA,30H;存立方数据高8 位,立方表数据序号A INCA;指向立方数据低8 位MOVC A,A+DPTR ; 读立方数据低 8 位MOV 31H,A; 存立方数据低 8 位 RET;TAB:DW 0,0,0,1,0,8,0,27,0,64;0 40 立方表 DW 0,125,0,216,0FAH,00H;说明:数据 2 A 缘由是立方表数据为双字节【课堂练习题】已知 8 位显示数字已存入首址为30H 的内 RAM 中,试将其转换为共阴显示字段码
24、,存入首址为40H 的内 RAM 中。五. 散转程序散转程序是一种并行多分支程序。【例】单片机四就运算系统。在单片机系统中设置四个运算命令键,它们的键号分别为0、1、2、3。当其中一个键按下 时,进行相应的运算。操作数由P1 口和 P3 口输入,运算结果仍由P1 口和 P3 口输出。详细如下: P1 口输入被加数、被减数、被乘数和被除数,输出运算结果的低8 位或商。 P3 口输入加数、减数、乘数和除数,输出进位(借位)、运算结果的高8 位或余数。键盘号已存 放在 30H 中。解:程序如下:PRGM:MOVP1,#0FFH;P1 口置输入态MOVP3,#0FFH;P3 口置输入态MOVMOVDP
25、TR,#TBJA,30H;置 .表首的址; 读键号RLA;键号2 AADD A,30H;键号 3 A可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 10 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -学习好资料欢迎下载JMPA+DPTR;散转TBJ: LJMP PRGM0;转 PRGM0 加法 LJMP PRGM1;转 PRGM1 减法 LJMP PRGM3;转 PRGM3 除法 LJMP PRGM2;
26、转 PRGM2 乘法 PRGM0: MOVA,P1;读加数ADDA,P3;P1+P3MOVP1,A;和 P1CLRA;ADDCA,#00H;进位 A MOVP3,A;进位 P3RET;PRGM1: MOVA,P1;读被减数 CLRC;SUBBA,P3;P1-P3 MOVP1,A; 差 P1 CLRA;RLCA;借位 AMOVP3,A; 借位 P3 RET;PRGM2: MOVA,P1;读被乘数MOVB,P3;置乘数 MULAB;P1 P3MOVP1,A;积低 8 位 P1MOVP3,B;积高 8 位 P3 RET;PRGM3: MOVA,P1;读被除数MOVB,P3; 置除数 DIVAB;P1 P3 MOVP1,A; 商 P1 MOVP3,B; 余数 P3 RET;说明:由于LJMP 为 3 字节指令,因此键号需先乘3, 以便转到正确的位置。可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 11 页,共 11 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载