




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文档51单片机汇编语言a)单个与多个LED灯,位操作与字节操作—输出ORG 0000HSTART:CLR CMOV P0.0,CMOV P1.1,CMOV P2.2,CMOV P3.3,CCLR ACPL AMOV P0,AMOV P1,AMOV P2,AMOV P3,AEND程序说明:可以用7段数码管来代替各端口的8个LED灯,硬件的这种显示方式使得数字表达成为实用。数字显示由数码管的硬件结构与工作原理(7个LED灯的几何变形组合)和数字表达的数据格式确定。如:共阳极数码管显示数字3,则有P1口送数据#4FH;MOVP1, #0B0H共阴极数码管显示数字8,则有P1口
2、送数据#80H;MOVP1, #7F H用数据表表示则有:TABshuziyang: /阳极管(共阴极管取反即可)DB(数字0F)C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H,C6H,A1H,86H,8EHTABshuziyin: /阴极管(共阳极管取反即可)DB(数字0F)3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71Hb)单个与多个LED灯闪烁—延时子程序—注意定时器前边已经看到,通过改变位或字节的赋值,可以使得LED灯亮或
3、灭,以此形成闪烁效果。但是硬件的响应时间太短,使得效果不佳。虽然可以通过改变单片机的时钟设置来改变效果。但时钟的改变极其不方便,因此需要利用延时指令(注意定时器功能)获得理想的效果。延时效果是利用单片机空转来实现的。ACALLDELAY;调延时子程序*DELAY:;延时子程序—这是一个非常有用、而且常见的一个子程序MOV R5,#04H;将16进制数04H传递给寄存器R5F3:MOV R6,#0FFH;将16进制数0FFH传递给寄存器R6F2:MOV R7,#0FFH;将16进制数0FFH传递给寄存器R7F1:DJNZR7, F1;寄存器R7减1非0跳转到F1,直到减为0顺
4、序执行下一指令DJNZR6, F2;寄存器R6减1非0跳转到F2,直到减为0顺序执行下一指令DJNZR5, F3;寄存器R5减1非0跳转到F3,直到减为0顺序执行下一指令RET;子程序结束,返回子程序入口处ACALLDELAY;调延时子程序*应用实例MAIN:CLR C MOV P0.0,C MOV P1.1,C MOV P2.2,CMOV P3.3,C ACALLDELAY;调延时子程序;CLR ACPL AMOV P0,AMOV P1,AMOV P2,AMOV P3,AACALL DELAY;调延时子程序SJMP MAIN ;相对转移时间短,用AJMP绝对转移时间长,RET是用于子程序的返
5、回DELAY:;延时子程序-这是一个非常有用、而且常见的一个子程序MOV R5,#04H;将16进制数04H传递给寄存器R5F3:MOV R6,#0FFH;将16进制数0FFH传递给寄存器R6F2:MOV R7,#0FFH;将16进制数0FFH传递给寄存器R7F1:DJNZR7, F1 ;寄存器R7减1非0跳转到F1,直到减为0顺序执行下一指令DJNZR6, F2 ;寄存器R6减1非0跳转到F2,直到减为0顺序执行下一指令DJNZR5, F3 ;寄存器R5减1非0跳转到F3,直到减为0顺序执行下一指令RET;子程序结束,返回子程序入口处ACALLDELAY;调延时子程序 END程序说明:注意延
6、时子程序中的DJNZR7, F1;DJNZR6, F2;DJNZR5, F3;通过增加或减少循环数目控制或改变延时时间c)单个与多个LED灯流动—位循环、字节循环与延时子程序ORG 0000HMAIN:;*位循环—扫描—流水灯—逐级增加灯的数目*CLR C MOV P0.0,C ACALLDELAY;调延时子程序 MOV P0.1,CACALLDELAY MOV P0.2,CACALLDELAY MOV P0.3,C ACALLDELAY MOV P0.4,C ACALLDELAY MOV P0.5,C ACALL
7、DELAY MOV P0.6,C ACALLDELAY MOV P0.7,CACALLDELAY;注意前面各位状态一直持续。P0口各位电平保持不变;*位循环—流水灯—逐个改变灯亮与灭*CLR C MOV P0.0,C ACALLDELAY;调延时子程序 CPL C MOV P0.0,CACALLDELAY CLR C MOV P0.1,C ACALLDELAY CPL C MOV P0.1,C ACALLDELAY CLR C MOV P0.2,C ACALLDELAY CPL C MOV P0.2,C ACALLDELAY CLR C MOV P0.3
8、,C ACALLDELAY CPL C MOV P0.3,C ACALLDELAY CLR C MOV P0.4,C ACALLDELAY CPL C MOV P0.4,CACALLDELAYCLR C MOV P0.5,C ACALLDELAY CPL C MOV P0.5,CACALL DELAY;注意前面各位状态—电平、输出状态变化……、……;*字节循环—逐级增加输出口的数目*CPL AMOV P0,AACALLDELAYMOV P1,AACALLDELAYMO
9、V P2,AACALLDELAYMOV P3,AACALLDELAY;*字节循环—流水灯—逐渐改变灯的亮灭状态*MOV P2,#01H;注意:#01H #02H #04H #08H #80H #40H #20H #10H阳极管ACALLDELAYMOV P2,#02H;注意:#FEH #FDH #FBH #F7H #7FH #BFH #DFH #EFH阴极管ACALLDELAYMOV P2,#04HACALLDELAYMOV P2,#08HACALLDELAY MOV P2,#10HACALLDELAY MOV P2,#20H ACALLDELAYMOV
10、 P2,#40HACALLDELAYMOV P2,#80HACALLDELAY;*字节循环—数码管—字符(数字、字母等)*MOV P1,#40H;改变字节中各位的电平状态,以便控制输出、显示所要求的内容ACALLDELAYMOV P1,#79HACALLDELAYMOV P1,#24HACALLDELAYMOV P1,#30HACALLDELAYMOV P1,# 19HACALLDELAYMOV P1,#12HACALLDELAYMOV P1,#02HACALLDELAY MOV P1,#78HACALLDELAYSJMP MAIN ;相对转移时间短,用
11、AJMP绝对转移时间长,RET是用于子程序的返回;*延时子程序*DELAY:;延时子程序—去除一个循环,时间变短了。MOV R6,#04H ;将16进制数04H传递给工作寄存器R6。改变#04H为#3FH时间变长F2:MOV R7,#0FFH;将16进制数0FFH传递给工作寄存器R7F1:DJNZR7, F1 ;寄存器R7减1非0跳转到F1,直到减为0顺序执行下一指令DJNZR6, F2 ;寄存器R6减1非0跳转到F2,直到减为0顺序执行下一指令RET ;子程序结束,返回子程序入口处ACALLDELAY;调延时子程序 END;*字节循环—数码管&
12、mdash;字符(数字、字母等)—数表与指针*MAIN:CLR A MOV P3,#00H MOV P0,#00H MOV P2,#00HMOV R0,#00H;寄存器中放数值0 MOV DPTR,#TABZshuzi ;指针PC指向数表 DISP:;段标记MOV A,R0 ;将寄存器中的数值转移到累加器中 MOVC A,A+DPTR;以DPTR作为基础,与累加器相加得到新地址给累加器 MOV P3,A;将累加器的地址给P3口 MOV P0,A SETB p2.3 ;一位数显示位控制;个位 SETB p2.7 ACALL DELAY;调延时子程序 ACALL DELAY I
13、NC R0 ;寄存器R0加1 CJNE R0,#16H,DISP ;寄存器与立即数18比较,不相等则转移到DISP循环。相等则顺序执行 TABshuziyang:/阳极管DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H,C6H,A1H,86H,8EH,0FFHTABshuziyin:/阴极管DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,0FFHEND;*字节循环—数码管—字符(数字、字母等)—移位控
14、制*RL A将累加器的值左移一位RLC A将累加器含进位C左移一位RR A将累加器的值右移一位RRC A将累加器含进位C右移一位1单个按键,单个与多个LED灯—最小系统—位输入与位、字节输出—判断与子程序a)单个按键与单个LED灯(位操作—输入与输出)—判断与子程序b)单个按键与多个LED灯(位操作—输入与字节操作—输出)c)单个按键与多个LED灯(位操作—输入与位、字节操作—输出)d)单个按键与单个电机控制&
15、;mdash;开环控制1单个按键,单个与多个LED(位操作—输入与位、字节操作—输出)—最小系统a)单个按键,单个LED灯(位操作与位输入、输出)—有、无判断而传送数据通过三个方面(程序指令、虚拟仿真、实体电路)探讨单输入与单输出:主要是理解位数据传送,包括汇编语言的数据传送指令实践、实际虚拟电路的数据传送响应,以体现抽象与具体的可理解性。?单输出的电子线路—静态特性—动态特性,指令控制输出?单输入与单的电子线路—静态特性(线路组成与结构)?单输入与单输出
16、电子线路的控制指令—动态特性(行为与状态);分号,这是一种注释方式符号ORG0000H ;这是伪指令,机器并不执行,用于程序的交流。指令执行的起始地址,十进制用D表示,十六进制用H表示,二进制用B表示。一个字节(8位机、16位机、32位机、64位机)一次执行。也可以按位来执行,也就是一个bit。ORG00000000B与ORG0000H作用相同。注意8位(bit)一个字节。16位的处理器需要用0000 0000H表示。16或32位以上,使用操作系统(Wince、Linux等)更有效,可以利用大量的、底层的、专业化、标准化的面向控制的库函数(如:API等)。START:;这是
17、伪指令,机器并不执行。只是为了汇编语言讲故事的可理解性MAIN: ;伪指令,主程序,用于区别子程序 PC→MOVA,#00H;将立即数00000000B(常数0D)传送给累加器ACC(专用寄存器,可用于存放计算结果等)。要通过累加器A和其它存储地址进行数据交换。注意PC是自动移位(自动+1)到下一个语句的地址。使用该语句实质上是让PC具有初始位置。PC→MOVP1,A;将累加器中的数(常数0D)传送给端口P1(P1口8位全部置0,低电平,P1端口各位处于关闭状态,LED灯处于系统响应的准备状态),按字节传送数据。特别记忆:PC→表示指针所指
18、地址,并会自动加1。输出口—字节PC→MOVC,0A0H;检测P2.0口的状态,将P2.0口的状态(由按键状态决定)传送给位累加器C,位累加器C的地址是PSW(程序状态字寄存器)的进位标志位CY(D7HPSW.7)。P2.0口可以是开或关,也就是置1或0,高电平或低电平),按字节传送数据。要通过位累加器C和其它存储地址进行数据交换。该语句也可以写成:MOVC,P2.0,比较字节数据传送MOVA,#00H或MOVA,P1。输入口—位PC→MOVP1.0,C ;等价于MOV90H,C;将位累加器C地址中的值传送给P1.0口(90H是其直接地址),也就是将P2.0口的状态(由直接地址0A0H状态决定)传送给直接地址90H,P1.0口,输出口—位PC→MOVP1.1,C;等价于MOV91H,CPC→MOVP1.2,C;等价于MOV92H,CPC→MOVP1.3,C;等价于MOV93H,C等等END;伪指令,程序结束标志程序说明:单个按键控制单个LED灯及其状态,也可以控制若干个LED灯及其状态。也就是多个LED灯,单个按键。反过来,可以是多个按键控制单个灯或多个按键控制多个LED灯。通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混凝土货车出售合同范本
- 业务外包合同范本模板
- 事业位协议班培训合同
- 承包婚庆公司的合同范本
- led汽车租赁合同范本
- 设计支付合同及保密协议
- 与人合作临时合同范本
- 红凤菜买卖合同3篇
- (买卖合同)商品房预订定金合同2篇
- 【物业保洁合同】物业公司绿化养护合同3篇
- 2025至2030中国水射流强化泵行业项目调研及市场前景预测评估报告
- 《推销实务》中职全套教学课件
- 销售激励方案奖罚制度(3篇)
- 2025-2026年秋季学期各周国旗下讲话安排表+2025-2026学年上学期升旗仪式演讲主题安排表
- GB/T 45875-2025精细陶瓷自然烧结条件下陶瓷粉体致密性的测定
- 中药足浴课件
- 新解读《水文资料整编规范 SL-T 247-2020》解读
- 家庭适老化改造案例研究及经验分享
- 中邮理财招聘笔试题库2025
- 2024年西师版小学数学二年级上册教案全册
- 局部晚期头颈部肿瘤治疗讲课件
评论
0/150
提交评论