学习情境2课件.ppt
《学习情境2课件.ppt》由会员分享,可在线阅读,更多相关《学习情境2课件.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习情境学习情境2 LED显示显示【学习目标学习目标】v 能力目标能力目标: 1、会设计制作LED显示电路。 2、了解单片机接口驱动LED电路的方法。 3、掌握LED显示电路的编程和调试方法v 知识目标:知识目标: 1、掌握单片机的算术运算和逻辑运算指令功能和编程方法。 2、掌握单片机的控制转移类指令和位操作指令功能和编程方法。任务任务2.1 指令系统指令系统 v 【任务描述任务描述】 通过对最小系统电路的设计,对单片机的硬件电路有了清楚的认识,而单片机的应用还用掌握软件编程的方法。在本任务中将MCS51系列单片机的指令系统介绍完整,通过了解各指令和伪指令的功能和编程方法,学会灵活编写简单的汇
2、编程序的方法。v 【任务分析任务分析】 (1)算术运算类指令的功能和编程方法。 (2)逻辑运算类指令的功能和编程方法。 (3)控制转移类指令的功能和编程方法。 (4)位操作指令的功能和编程方法。 (5)伪指令的功能和在程序中的使用。【知识准备知识准备】一、算术运算类指令 1加法指令 (1)不带进位的加法指令 不带进位的加法指令的功能是将累加器A中的内容和源操作数中的内容相加,加后的和再放入累加器A中。运算结果影响PSW中的Cy、OV、AC和P。ADD A,Rn ;A (A)+(Rn)ADD A,direct ;A (A)+(direct)ADD A,Ri ;A (A)+(Ri)ADD A,#d
3、ata ;A (A)+datav Cy:当加法运算D7位(最高位)有进位时,Cy=1;否则Cy=0。v AC:当加法运算的低4位向高4位有进位时,AC =1;否则AC =0。v OV:OV=C8+C7(C8为最高位进位位,C7为次高位进位位)。v P:当放入累加器A中的“和”中“1”的个数为奇数个时,P=1;否则P=0。v 例2.1 写出下列指令执行的结果。v MOV A,#78H;(A)=78Hv ADD A,#69H;(A)=0E1H,(PSW)=0C4Hv 加法计算过程为:v 78H=0111 1000Bv +69H=0110 1001Bv 0E1H=1110 0001Bv Cy=0=C
4、8, C7=1,AC=1, OV=C8+C7=0+1=1,P=0则(PSW)=11000100B=0C4Hv(2)带进位的加法指令v带进位加法指令和不带进位加法相比较就是在源操作数和累加器A内容相加后,还要再加上进位位。运算结果对PSW中的Cy、OV、AC和P影响和不带进位加法指令相同。ADDC A,Rn ;A (A)+(Rn)+(Cy)ADDC A,direct ;A (A)+(direct)+(Cy)ADDC A,Ri ;A (A)+(Ri)+(Cy)ADDC A,#data ;A (A)+data+(Cy)v 2减法指令v 带进位减法指令的功能是用累加器中的数减去源操作数后,再减进位位,
5、结果放在累加器中。运算结果影响PSW中的Cy、OV、AC和P。v Cy:当减法运算D7位(最高位)有借位时,Cy=1;否则Cy=0。v AC:当减法运算的低4位向高4位有借位时,AC =1;否则AC =0。v OV:OV=C8+C7(C8为最高位借位位,C7为次高位借位位)。v P:当放入累加器A中的“差”中“1”的个数为奇数个时,P=1;否则P=0。SUBB A,Rn ;A(A)(Rn)(Cy)SUBB A,direct ;A(A)(direct)(Cy)SUBB A,Ri ;A(A)(Ri)(Cy)SUBB A,#data ;A(A)data(Cy)v3加1指令vINC A ;A(A)+1
6、vINC Rn ;Rn(Rn)+1vINC direct ;direct(direct)+1vINC Ri ;(Ri)(Ri)+1vINC DPTR;DPTR(DPTR)+1v加1指令是给目的地址单元中的数加1,结果仍在原来地址单元。加1指令对状态标志寄存器PSW没有影响。v4减1指令v减1指令是把目的地址单元中的数减1,结果仍在原来地址单元中。减1指令对状态标志寄存器PSW没有影响。 DEC A ;A(A)1DEC Rn ;Rn(Rn)1DEC direct ;direct(direct)1DEC Ri ;(Ri)(Ri)1实验步骤实验步骤 v 5十进制调整指令v 十进制调整指令是一条单字节
7、指令,也称为BCD码修正指令,这条指令不能独立出现,必须紧跟在ADD或ADDC指令之后出现。当两个压缩的BCD码用加法指令相加后,在A中的“和”是按照二进制相加的结果,必须用这条指令对BCD码的加法运算结果进行修正。其修正的方法为:v 当低半字节的值9或AC=1时,低半字节加6;v 当高半字节的值9或C=1时,高半字节加6v 在使用时只要在BCD码加法运算指令的后面跟一条十进制调整指令就可以了,但不能用于减法运算。DA A v 6乘法指令v 乘法指令的功能是把累加器A和寄存器B中的两个无符号数相乘,结果的低8位放在A中,高8位放在B中。乘法运算影响PSW的状态标志Cy、OV和P。v OV:当乘
8、积结果大于0FFH时,(OV)=1,否则(OV)=0。v Cy:只要执行乘法运算Cy总是被清0。v P:乘法运算后放在A中的内容的“1”的个数为奇数个,P=1;否则P=0。 MUL AB ;BA(A)(B) v 7除法指令v 除法指令的功能是把累加器A中的无符号数除以寄存器B中的无符号数。结果的商在A中,余数在B中。除法运算影响PSW的状态标志Cy、OV和P。v OV:若除数为0,(OV)=1,否则(OV)=0。v Cy:只要执行除法操作总是清0。v P:除法运算后放在A中的内容的“1”的个数为奇数个,P=1;否则P=0。v 例2.8 写出下列指令执行的结果。v MOV A,#35H;(A)=
9、35Hv MOV B,#08H;(B)=08Hv DIV AB ;(A)=06H,(B)=05H,(CY)=0,(P)=0,(OV)=0DIV AB v二、逻辑运算及移位指令v逻辑运算及移位指令共24条,包括“与”、“或”、“异或”及累加器清“0”、取反、左移和右移指令。除改变累加器A中的内容的指令对奇/偶标志P有影响外,不影响其它状态标志。v 1逻辑“与”运算指令:v 二进制数与逻辑为:有0出0,全1出1。对于十六进制数与逻辑为:任何一个十六进制数和0相与,结果为0;任何一个十六进制数和F相与,结果为本身。逻辑“与”运算指令的功能是把目的操作数与源操作数按位相“与”,结果放在目的地址单元中;
10、可用来屏蔽掉字节数据中的某些位。ANL A,direct; A(A)(direct)ANL A,#data;A(A)dataANL A,Rn;A(A)(Rn)ANL A,Ri;A(A)(Ri)ANL direct,A;direct(direct)(A)ANL direct, #data;direct(direct) datav 2逻辑“或”运算指令v 二进制数或逻辑为:有1出1,全0出0。对于十六进制数或逻辑为:任何一个十六进制数和0相或,结果为它本身;任何一个十六进制数和F相或,结果为F。逻辑“或”运算指令的功能是把目的操作数与源操作数按位相“或”,结果放在目的地址单元中;可用来屏蔽掉字节数
11、据中的某些位。 ORL A,Rn ;A(A)(Rn)ORL A,direct ;A(A)(direct)ORL A,Ri ;A(A)(Ri)ORL A,#data ;A(A)dataORL direct,A ;direct(direct)(A)ORL direct,#data ;direct(direct)data v 3. 逻辑“异或”运算指令v 异或的逻辑为:相同出0,不同出1。对于任何二进制数和0相异或结果是其本身,任何二进制数和1相异或结果被取反。对于十六进制数异或逻辑为:任何数和0相异或结果是其本身,任何数和F相异或结果是按位取反。逻辑“异或”运算指令的功能是把目的操作数与源操作数按
12、位相“异或”,结果放在目的地址单元中v 例如累加器A中的内容为01100111B,执行指令XRL A,#0FH后,累加器A中的内容为01101000B。XRL A,direct;A(A)+( direct) XRL A,#data ;A(A)+dataXRL A,Rn ;A(A)+(Rn)XRL A,Ri;A(A)+( Ri)XRL direct,A;direct(A)+( direct)XRL direct, #data;direct(direct)+datav4取反和清零v例如执行CLR A指令之后,累加器A 中内容被清0,即(A)=0000 0000B;再执行CPL A指令后,累加器A中
13、的内容全部被取反,即(A)=1111 1111B。 取反:CPL A;累加器A中的内容按位取反清零:CLR A;累加器A中的内容变为0v5移位类指令v(1)累加器A左移指令RL A;累加器A各位依次左移,最高位移到最低位 其各个位移位的情况如图所示: 图v(2)带进位位左移v注:带CY左移也可以实现2操作。0256之间的数执行带CY左移指令后被扩大一倍。RLC A;累加器A各位依次左移,最高位移到Cy中,原Cy中内容移到最低位其各个位移位的情况如图所示: 图v(3)累加器A右移指令v注:右移指令可以实现2操作,要保证2结果正确则D0位必须为0。RR A;累加器A各位依次右移,最低位移到最高位
14、其各个位移位的情况如图所示: 图v(4)带CY右移指令 其各个位移位的情况如图所示:注:带CY右移指令也可以实现2操作,要保证2结果正确则D0位必须为0。RRC A;累加器A各位依次右移,Cy中内容移到累加器A的最高位,最低位的内容移到Cy中v三、控制转移类指令v控制转移类指令共17条,包括无条件转移指令,条件转移指令,调用和返回指令等。其功能是无条件或者有条件地控制程序转移到目的地址单元 v 1无条件转移指令v (1)长转移指令v 这条指令是三字节直接寻址的无条件转移指令,转移地址在指令操作数中直接给出,寻址范围为64K(0000HFFFFH),所以称为长转移指令。v 在程序执行过程中只要遇
15、到LJMP就转移到addr16所指示的位置,转移地址addr16还可以用标号来代替。标号用于表示标号后面的指令所在的地址,标号放在指令的前面,并且用“:”号和指令隔开。LJMP addr16 ;PCaddr16v (2)绝对转移指令v 这条指令是双字节直接寻址的无条件转移指令,转移目的地址在指令操作数中直接给出,寻址范围为2K。v 在程序执行过程中只要遇到AJMP就转移目的地址执行指令,addr11代表目的地址的低11位地址,目的地址的高5位和AJMP指令下一条指令所在地址的高5位相同。转移地址也可以用标号来代替。但是标号表示的地址必须是在2KB范围内的地址。AJMP addr11;PC(PC
16、)+2,PC100addr16v(3)相对转移(短转移)指令v这条指令是双字节相对寻址的无条件转移指令,rel是以补码形式表示的8位的偏移量,寻址范围为256(-128+127),-号表示向回跳转,+号表示向下跳转。转移地址为程序计数器PC的当前值加偏移量,因此称为相对短转移指令。v 在用汇编语言编程时,相对地址的偏移量rel可以用目的地址的标号(符号地址)表示,程序汇编时自动计算偏移量。 SJMP rel;PC(PC)+2+relv4)变址寻址转移指令(散转指令)v这条指令单字节变址寻址的无条件转移指令,累加器A中存放的是相对偏移量,DPTR中存放的是变址基值,二者之和为转移地址,寻址范围为
17、64KB(0000HFFFFH)。 JMP A+DPTR ;PC(A)+(DPTR)v2条件转移指令v(1)累加器判零转移指令v1累加器A中的内容是0转移v这条指令的功能就是若(A)=0,就转移到rel所指示的地址;若(A)0,则不转移,顺序执行下一条指令。JZ rel ;若(A)=0,则PC(PC)+2+rel 若(A)0,则PC(PC)+2v2累加器A中的内容不是0转移 v这条指令的功能和JZ rel相反,若(A) 0,就转移到rel所指示的地址;若(A) =0,则不转移,顺序执行下一条指令。JNZ rel;若(A) 0,则PC(PC)+2+rel 若(A) =0,则PC(PC)+2v(2
18、)比较不相等转移指令 是根据两数比较的结果决定程序是否转移,共有4条,均是相对寻址的三字节指令。比较相等时,程序顺序执行,不相等时转移。并且当目的地址单元中的数小于源地址单元中的数据时,进位位Cy置1,否则清0,不影响其它状态标志位。CJNE A,#data,rel;(A)data,就转移到rel所指示的地址如果(A) data则(CY)=0;如果(A) (direct)则(CY)=0;如果(A) data则(CY)=0;如;果(Rn) data则(CY)=0;如果(Ri)data则(CY)=1 ;(Ri)=data,不转移,顺序执行下一条指令v (3)减1不为零转移指令 对指定单元减1计数,
19、结果不为零时转移,否则顺序执行,共有2条,均是相对寻址的转移指令。v (1)DJNZ指令主要应用于循环程序, 操作数Rn或direct作为循环次数的计数器,每循环一次减1直到减为0,循环结束。v (2)DJNZ指令可以用于延时程序中实现定时操作。 DJNZ Rn,rel;Rn(Rn)-1后,如果(Rn)0,转移到rel所指示的地址。 ; Rn(Rn)-1后,如果(Rn)=0,不转移,顺序执行下一条指令。DJNZ direct,rel;direct(direct)-1后,如果(direct)0,转移到rel所指示的地址。 ; direct(direct)-1后,(direct)=0,不转移,顺序
20、执行下一条指令。v3调用/返回类指令 调用指令在主程序中使用,执行时保护断点,使程序转向子程序入口;返回指令在子程序的末尾使用,其作用是返回到主程序中原来被断开的地方,即断点。v(1)调用指令v这条指令是直接寻址的三字节指令,将程序计数器PC的当前值压入堆栈,子程序入口地址ddr16送PC。寻址范围为64K(0000HFFFFH),称为长调用指令。 LCALL addr16 ;PC(PC)+3(找到断点地址);SP(SP)+1,(SP)PC70(将断点地址的低8位压入堆栈);SP(SP)+1,(SP)PC158(将断点地址的高8位压入堆栈);PCaddr16(转移到子程序入口地址)v 这条指令
21、是直接寻址的双字节指令,使程序计数器PC的当前值压栈,11位的子程序入口地址addr11送PC的低11位,与其高5位合成16位地址,常称为绝对调用指令,指令格式与绝对转移指令AJMP类似,寻址范围为2K。 ACALL addr11 ;PC(PC)+2(找到断点地址);SP(SP)+1,(SP)PC70(将断点地址的低8位压入堆栈);SP(SP)+1,(SP)PC158(将断点地址的高8位压入堆栈);PCaddr11(转移到子程序入口地址)v (2)返回指令v 这条指令是子程序返回指令,单字节,无操作数,其功能是弹栈,把断点地址送回到程序计数器PC中,即返回到调用该子程序的程序断点处。一般用在子
22、程序的末尾。v 这条指令是中断返回指令,单字节,无操作数,其功能与RET相同,使程序返回到被中断的程序断点处。另外,该指令具有清除中断响应时置位的标志,开放低一级的中断以及恢复中断逻辑等功能。 RET ;PC158(SP) , SP(SP)-1 (将断点地址的高8位弹出堆栈);PC70(SP) , SP(SP)-1 (将断点地址的低8位弹出堆栈)RETI;PC158(SP) , SP(SP)-1 (将断点地址的高8位弹出堆栈);PC70(SP) , SP(SP)-1 (将断点地址的低8位弹出堆栈) ;清相应中断状态位v4空操作指令v执行这条指令时单片机不进行任何操作,只是占用一个机器周期的时间
23、,一般用于延时程序中调整时间。 NOP ;PC(PC)+1v四、四、位操作类指令 位操作类指令是对能够进行位寻址的位进行操作的指令,在单片机中可以位寻址的地址包括位寻址区:20H2FH中的128个位地址和SFR中的83个位地址,共有211个位地址,其中PSW中的Cy作为布尔处理器使用,在指令中用“C”表示,其余的210个位地址在指令中用“bit”表示。v共有17条指令,包括位传送、位清0、位取反、按位“与”和按位“或”等,用来对位地址空间进行操作。v1位传送指令v有两条,是位寻址的双字节指令,第二字节为位地址,用来实现位累加器Cy与位地址单元数据传送。在汇编语言程序设计中,寻址位可用位地址、位
24、名称(如F0)及寄存器加标注来表示,如PSW.6 MOV C, bit ;Cy(bit) (将bit位的内容送到布尔累加器Cy中) MOV bit, C ;bit(Cy) (将布尔累加器Cy中的内容送到bit位中) v2位清0和置1指令 CLR C ;Cy0(将CY清0) CLR bit ;bit0(将bit位清0) 有两条,一条是单字节指令,另一条是双字节指令,用来把进位位Cy或指定位清0。例如执行指令CLR ACC.0后累加器A中ACC.0位被清0。 SETB C ;Cy1(将CY置1)SETB bit ;bit1(将bit位置1)v3位逻辑运算指令v(1)按位“与”指令 有两条,均为双字
25、节指令,其功能是把位累加器Cy中的内容与指定位中的内容或其反码“与”,结果在Cy中 ANL C, bit ;Cy(Cy)(bit) (将CY中的内容与bit位的内容相与,与运算结果送到Cy)ANL C, /bit ;Cy(Cy)(bit )(bit位中内容取反,再和CY中内容相与,结果送到CY)v(2)按位“或”指令 有两条,均是双字节指令,其功能是把位累加器Cy中的内容与指定位中的内容或其反码“或”,结果在Cy中。 ORL C, bit ;Cy(Cy)(bit) (将CY中内容与bit位的内容相或,结果送到CY)ORL C, /bit;Cy(Cy)(bit )(bit位中的内容取反,再和CY
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 情境 课件
限制150内