版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、子情景二 单灯闪烁单灯闪烁项目引入在公共场合,可以看到各种各样的闪灯。单片机控制发光二极管的亮灭。 通过8051单片机控制一个发光二极管的亮灭闪烁,点亮时间持续1秒钟。 项目要求 项目分析1、单片机简单程序的编写2、延时程序的编写2、单片机与发光二极管的连接 3、二极管闪烁程序项目计划1、设计单片机与二极管的硬件连接图2、编写程序3、运行调试程序1 清清0 0与与取反指令(2 2条)条)取反:取反:cpl a cpl a ;/aa/aa例:例:若若a=5cha=5ch,执行,执行cpl acpl a 结果:结果:a=a3ha=a3h清清0 0:clr aclr a ;0a0ac comomp
2、plement lement l logic operationogic operation相关知识2 1717条条共有控制程序转移类指令共有控制程序转移类指令( (不包括位操作类的转移不包括位操作类的转移指令指令) )。此类指令一般不影响。此类指令一般不影响pswpsw。包括以下类型:包括以下类型:无条件转移和条件转移无条件转移和条件转移相对转移和绝对转移相对转移和绝对转移长转移和短转移长转移和短转移调用与返回指令调用与返回指令 短转移类指令:短转移类指令:ajmp ajmp addr11addr11 长转移类指令:长转移类指令:ljmp ljmp addr16addr16 相对转移指令:相
3、对转移指令:sjmp sjmp relrel 间接转移指令:间接转移指令:jmp jmp a+dptra+dptr(1 1)上面的前三条指令,统统理解成:上面的前三条指令,统统理解成:pcpc值改变,即值改变,即跳转到一个标号处。跳转到一个标号处。 那么他们的区别何在呢?那么他们的区别何在呢?v跳转的范围不同。跳转的范围不同。 短转移类指令:短转移类指令:ajmp ajmp addr11addr11 长转移类指令:长转移类指令:ljmp ljmp addr16addr16 相对转移指令:相对转移指令:sjmp sjmp relrel转移范围转移范围:2kb2kb64kb64kb-128-128
4、+127+127v指令构成不同。指令构成不同。 ajmpajmp、ljmpljmp后跟的是后跟的是绝对地址绝对地址, 而而sjmpsjmp后跟的是后跟的是相对地址相对地址。 v指令长度不同指令长度不同v 原则上,所有用原则上,所有用sjmpsjmp或或ajmpajmp的地方都可以用的地方都可以用 ljmpljmp来替代。来替代。间接转移指令:间接转移指令:jmp jmp a+dptra+dptr 这条指令的用途也是跳转,转到什么地方去呢?这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。这可不能由标号简单地决定了。 转移地址由转移地址由a+dptra+dptr形成,并直接送
5、入形成,并直接送入pcpc。指令对指令对a a、dptrdptr和标志位均无影响和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为本指令可代替众多的判别跳转指令,又称为散散转指令转指令,多用于多分支程序结构中。,多用于多分支程序结构中。(2 2)第四条指令与前三条指令相比有所不同第四条指令与前三条指令相比有所不同例例: mov dptrmov dptr,#tab #tab ;将;将tabtab代表的地址送入代表的地址送入dptrdptr jmp a+dptr jmp a+dptr ;跳转;跳转tab: ajmp rout0 tab: ajmp rout0 ;跳转;跳转rout0rout
6、0开始的程序段开始的程序段tab+2: ajmp rout1 ajmp rout1 ;跳转;跳转rout1rout1开始的程序段开始的程序段tab+4: ajmp rout2 ajmp rout2 ;跳转;跳转rout2rout2开始的程序段开始的程序段tab+6: ajmp rout3 ajmp rout3 ;跳转;跳转rout3rout3开始的程序段开始的程序段 .rout0rout0: .rout1rout1: .rout2rout2: .rout3rout3:执行该段程序后,程序将根执行该段程序后,程序将根据据a a中的内容转移到不同的中的内容转移到不同的程序段去执行程序段去执行-散转
7、。散转。a=0,a=0,转转rout0rout0a=2,a=2,转转rout1rout1a=4,a=4,转转rout2rout2a=6,a=6,转转rout3rout3条件转移指令是指在满足一定条件转移指令是指在满足一定条件条件时进行时进行相对转相对转移移,否则程序继续执行,否则程序继续执行本指令的本指令的下一条指令。下一条指令。一、判一、判a内容是否为内容是否为0转移指令转移指令(2条)条) jz jz rel rel ;如果;如果a=0a=0,则转移,否则顺序执行。,则转移,否则顺序执行。 jnzjnz rel rel ;如果;如果a0a0,就转移。,就转移。转移到相对于当前转移到相对于当
8、前pcpc值的值的8 8位移量的地址去。即:。即: 新的新的pcpc值值= =当前当前pc+pc+偏移量偏移量relrel我们在编写汇编语言源程序时,可以直接写成:我们在编写汇编语言源程序时,可以直接写成: jzjz 标号标号 ;即转移到标号处。;即转移到标号处。 mov a mov a,r0r0 jz l1jz l1 mov r1 mov r1,#00h#00h ajmp l2 ajmp l2 l1 l1: mov r1: mov r1,#0ffh#0ffh l2l2: sjmp l2: sjmp l2 end end 在执行上面这段程序前:如果在执行上面这段程序前:如果r0=0r0=0,结
9、果,结果r1=0ffhr1=0ffh。而如果而如果r0r0 0 0,则结果是,则结果是r1=00hr1=00h。 把上面的那个例子中的把上面的那个例子中的jzjz改成改成jnzjnz,看看程序执行的,看看程序执行的结果是什么结果是什么? ? 如果如果r0=0r0=0,结果,结果r1=00hr1=00h。如果。如果r0 r0 0 0,结果是,结果是r1r1中的中的值为值为0ffh0ffh。cjne acjne a,# #datadata,relrel cjne acjne a,directdirect,relrelcjne rncjne rn,# #datadata,relrelcjne cjn
10、e riri,# #datadata,relrel此类指令的功能是将两个操作数比较,如果两者此类指令的功能是将两个操作数比较,如果两者相等相等,就,就顺序执行顺序执行,如果,如果不相等不相等,就,就转移转移。同样地,使用时,我们可以将同样地,使用时,我们可以将relrel理解成标号,即:理解成标号,即:cjne acjne a,#data#data,标号,标号cjne acjne a,directdirect,标号,标号cjne rncjne rn,#data#data,标号,标号cjne ricjne ri,#data#data,标号,标号利用这些指令,可以判断两数是否利用这些指令,可以判断
11、两数是否相等相等。但有时还想得知两数比较之后但有时还想得知两数比较之后哪个大哪个大,哪个小哪个小,本条指令也具有这样的功能:本条指令也具有这样的功能:如果两数不相等,则如果两数不相等,则cpucpu还会用还会用cycy(进位位)(进位位)来反映哪个数大,哪个数小。来反映哪个数大,哪个数小。如果前面的数大,则如果前面的数大,则cy=0cy=0,否则,否则cy=1cy=1。因此在程序转移后再次利用因此在程序转移后再次利用cycy就可判断出哪个就可判断出哪个数大,哪个数小了。数大,哪个数小了。 mov a,r0 cjne a,#10h,l1 mov r1,#0 ;如r0=10h,则不转移r1=00h
12、; ajmp l3l1:jc l2 ;如cy=1即 r010h,则转移 ajmp l3l2:mov r1,#0ffhl3:sjmp l3因此最终结果是:本程序执行前,如果r0=10h,则r1=00h;如果r010h,则r1=0aah;如果r010h,则r1=0ffh。djnz rndjnz rn,relreldjnz directdjnz direct,relreldjnzdjnz指令的执行过程是这样的指令的执行过程是这样的: :它将第一个参数中的值它将第一个参数中的值减减1 1,然后看这个值是否等于,然后看这个值是否等于0 0,如果,如果等于等于0 0,就往下执行,如果,就往下执行,如果不等
13、于不等于0 0,就转移,就转移到第二个参数所指定的地方去。到第二个参数所指定的地方去。例:例: djnz 10hdjnz 10h,looploop . .loop: .loop: .例例: mov 23h,#0ahmov 23h,#0ah clr a clr aloop: add a,23hloop: add a,23h djnz 23h,loop djnz 23h,loop sjmp $ sjmp $上述程序段的执行过程是:上述程序段的执行过程是:将将23h23h单元中的数连续相加,存至单元中的数连续相加,存至a a中,每加一次,中,每加一次, 23h23h单元中的数值单元中的数值减减1 1
14、,直至减到,直至减到0 0,共加(,共加(23h23h)次。)次。3 3 空操作指令空操作指令(1条) nop空操作,就是什么事也不干,停一个周期,一般空操作,就是什么事也不干,停一个周期,一般用作短时间的延时。用作短时间的延时。4 4 位操作指令位操作指令( 1717条)条)mcs-51mcs-51单片机的硬件结构中,有一个位处理器单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集,(又称布尔处理器),它有一套位变量处理的指令集,包括包括位位变量变量传送传送、逻辑逻辑运算、控制程序运算、控制程序转移转移等。等。在在mcs-51 mcs-51 中,有一部份中,有一
15、部份ramram和一部份和一部份sfrsfr是具有位是具有位寻址功能的。寻址功能的。v 位操作区位操作区:内部:内部ramram的的20h-2fh20h-2fh这这1616个字节单个字节单元,即元,即128128个位单元个位单元( (位地址空间位位地址空间位00007fh)7fh);v 可以位寻址的特殊功能寄存器可以位寻址的特殊功能寄存器:80318031中有一中有一些些sfrsfr是是可以进行位寻址可以进行位寻址的,这些的,这些sfrsfr的特点是的特点是其其字节地址均可被字节地址均可被8 8整除整除, 如如a a累加器,累加器,b b寄存寄存器、器、pswpsw、ipip(中断优先级控制寄
16、存器)、(中断优先级控制寄存器)、 ieie(中断允许控制寄存器)、(中断允许控制寄存器)、sconscon(串行口控制(串行口控制寄存器)、寄存器)、tcontcon(定时器(定时器/ /计数器控制寄存计数器控制寄存器)、器)、p0-p3p0-p3(i/oi/o端口锁存器)。端口锁存器)。 在进行位处理时,在进行位处理时, cycy用作用作“位位累加器累加器” 。 以以psw中位中位4( rs1 )为例为例。直接直接(位位)地址方式:地址方式:如如 d4h;点操作符号方式点操作符号方式:如:如 psw.4,d0h.4;位名称方式位名称方式:如:如 rs1;用户定义名方式用户定义名方式:如用伪
17、指令:如用伪指令 bitsub.reg bit rs1定义后,可用定义后,可用sub.reg代替代替rs1。位地址表达方式位地址表达方式4.1 4.1 位传送指令位传送指令(2条) mov cmov c,bitbit;bitbit c cmov mov bitbit,c c;c c bitbit这组指令的功能是实现位累加器(这组指令的功能是实现位累加器(cycy)和其它)和其它位地址之间的数据传递。位地址之间的数据传递。例例:mov cmov c,p1.0p1.0;将;将p1.0p1.0的状态送给的状态送给c c。 mov p1.0mov p1.0,c c ;将;将c c中的状态送到中的状态送
18、到p1.0 p1.0 ;引脚上去。;引脚上去。 位清位清0 0指令指令 clr cclr c ;使;使cy=0cy=0 clr bit clr bit ;使指令的位地址等于;使指令的位地址等于0 0。 例例:clr p1.0 clr p1.0 ;即使;即使p1.0p1.0变为变为0 0 位置位置1 1指令指令 setb csetb c ;使;使cy=1cy=1 setb bit setb bit ;使指定的位地址等于;使指定的位地址等于1 1。 例例:setb p1.0 setb p1.0 ;使;使p.0p.0变为变为1 14.3 位逻辑运算指令位逻辑运算指令 (6条) 位与指令位与指令 an
19、l anl c c,bitbit ;cy与指定位的值相与,结果送cyanl anl c c,/bit/bit ;先将指定的位地址中的值取出后取反,再和cy相与,结果送回cy。但但注意注意: :指定指定的位地址中的值本身并不发生变化。的位地址中的值本身并不发生变化。例例:anl c,/p1.0位取反指令位取反指令 cpl ccpl c ;使;使cycy值取反。值取反。cpl bitcpl bit ;使指定的位的值取反。;使指定的位的值取反。例例:cpl p1.0cpl p1.0位或指令位或指令 orl orl c c,bitbitorl orl c c,/bit/bit4.4 4.4 位条件转移
20、指令位条件转移指令(5条) 判判cycy转移指令转移指令 jc reljnc rel 第一条指令的功能是如果cy=1就转移,否则就顺序执行。 第二条指令则和第一条指令相反,即如果cy=0就转移,否则就顺序执行。 同样理解: jnc 标号判位变量转移指令判位变量转移指令 jb bit,reljnb bit,rel jbc bit,rel第一条指令:如果指定的(bit)=1,则转移,否则顺序执行,第二条指令功能相反。 同样理解:jb bit,标号第三条指令是如果指定的(bit)=1,则转移,并把该位清0,否则顺序执行。5 5 伪指令伪指令 在汇编时起控制作用,自身在汇编时起控制作用,自身并不产生并
21、不产生机器码,机器码,而仅是为汇编服务的一些指令,称为而仅是为汇编服务的一些指令,称为伪指令伪指令。伪指。伪指令不属于令不属于80c5180c51指令系统。指令系统。5.1 5.1 起始伪指令起始伪指令 org(originorg(origin) ) 功能:规定功能:规定orgorg下面目标程序的起始地址下面目标程序的起始地址。格式:格式:org 16org 16位位地址地址 org 0100h org 0100h start start:mov amov a,#05h#05h add a add a,#08h#08h mov 20h mov 20h,a a org 0100h org 010
22、0h表示该伪指令下面第一条指令的起始地址表示该伪指令下面第一条指令的起始地址是是0100h0100h,即,即mov amov a,#05h#05h指令的第一个字节地址为指令的第一个字节地址为0100h0100h,或标号或标号startstart代表的地址为代表的地址为0100h0100h。5.2 结束伪指令结束伪指令 endend功能:汇编语言源程序的结束标志。功能:汇编语言源程序的结束标志。 在在endend后面的指令,汇编程序不再处理后面的指令,汇编程序不再处理。格式:格式:endend5.3 等值伪指令等值伪指令 equequ(equateequate)格式:格式:字符名称字符名称 eq
23、uequ 数据或汇编符号数据或汇编符号例如:例如: pp equ r0 pp equ r0 ;pp=r0pp=r0 mov a mov a,pp pp ;a r0a r0 这里将这里将pppp等值为汇编符号等值为汇编符号r0r0,在指令中,在指令中pppp就可以代替就可以代替r0r0来使用。来使用。 5.4 数据地址赋值伪指令数据地址赋值伪指令 datadata格式:格式:字符名称字符名称 datadata 表达式表达式功能:将数据地址或代码地址赋予规定的功能:将数据地址或代码地址赋予规定的 字符名称。字符名称。5.5定义字节伪指令定义字节伪指令dbdb(define bytedefine b
24、yte)格式:格式:db 8db 8位二进制数表位二进制数表功能:从指定的地址单元开始,定义若干功能:从指定的地址单元开始,定义若干 个个8 8位内存单元的数据。位内存单元的数据。 数据与数据之间用数据与数据之间用“,”分割。分割。例如:例如: org 4000horg 4000h tab tab: db 73hdb 73h,4545,“a a”,“2 2” tab1 tab1:db 101bdb 101b 以上指令经汇编后,将对以上指令经汇编后,将对4000h4000h开始的若干内存单开始的若干内存单元赋值。元赋值。 (4000h)=73h(4000h)=73h,(4001h)(4001h):2dh(2dh(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 系统运维服务合同
- 室内设计设计合同
- 先网签还是先签合同
- 委托创造合同
- 电白租房合同
- 2025年爱国主义战知识竞赛测试题(附答案)
- 长短信协议书
- 房车合作协议书
- 工伤 和解协议书
- 财产代持协议书与代管协议书
- 煤矿智能掘进员安全技术规程
- 5.1走近老师课件-2025-2026学年统编版道德与法治 七年级上册
- 2025年价格鉴证师职业能力水平评价考试(法学基础知识与价格政策法规)练习题及答案二
- 电气装配课件
- 第8课+溺水的预防与急救+课件+2025-2026学年人教版(2024)初中体育与健康七年级全一册
- 2025年入团考试试题库问答题部分及解析答案
- 管理咨询项目考核方案
- 2025管理学原理企业管理试题及答案
- 玉雕理论考试题库及答案
- 灵山县病死禽畜无害化处理项目环评报告
- 2025至2030年中国城市排水系统行业发展潜力分析及投资方向研究报告
评论
0/150
提交评论