C单片机指令集大全
MCS-51单片机指令表
MCS-51单片机指令表序号__-__-__年__-__序号__-__附录1MCS-51单片机指令表数据传送类指令指令格式指令功能字节MOVA,RnRn内容传送到A1MOVA,direct 直接地址内容传送到A2MOVA,@Ri间接RAM单元内容送A1MOVA,#data立即数送到A2MOVRn,AA内容送到Rn1MOVRn,direct直接地址内容传送到Rn2MOVRn,#data立即数传送到Rn2MOVdirect,AA传送到直接地址2MOVdirect,RnRn传送到直接地址2MOVdirect2,直接地址传送到直接地址3direct1MOVdirect,@Ri间接RAM内容传送到直接地址2MOVdirect,#data立即数传送到直接地址3MOV@Ri,AA内容送间接RAM单元1MOV@Ri,direct直接地址传送到间接__@Ri,#data立即数传送到间接__CA,@A+DPTR代码字节送A(DPTR为基址)1MOVCA,@A+PC代码字节送A(PC为基址)1MOVXA,@Ri外部RAM(8地址)内容传送到A1MOVXA,@DPTR外部RAM内容(16地址)传送到A1__,#data1616位常数加载到数据指针1MOVX@Ri,AA内容传送到外部RAM(8地址)1MOVX@DPTR,AA内容传送到外部RAM(16地址)1PUSHdirect直接地址压入堆栈2POPdirect直接地址弹出堆栈2XCHA,RnRn内容和A交换1XCHA,direct直接地址和A交换2XCHA,@Ri间接RAM内容A交换1XCHDA,@Ri间接RAM内容和A交换低4位字1节算术运算类指令指令格式指令功能字节INCAA加11INCRnRn加11INCdirect直接地址加12INC@Ri间接RAM加11__数据指针加11DECAA减11DECRnRn减11DECdirect直接地址减12周期__-__-__-__1111周期__-____-__年__序号__-__-__年__-__DEC@Ri__DDA,RnADDA,directADDA,@RiADDA,#dataADDCA,RnADDCA,di rectADDCA,@RiADDCA,#dataSUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#d ata间接RAM减1A和BRn相乘A除以BRnA十进制调整Rn与A求和直接地址与A求和间接RAM与A求和立即数与A求和Rn与A求和(带进位)直接地址与A求和(带进位)间接RAM与A求和(带进位)立即数与A 求和(带进位)A减去Rn(带借位)A减去直接地址(带借位)A减去间接RAM(带借位)A减去立即数(带借位)逻辑运算类指令指令格式指令功能ANLA,RnRn“与”到AANLA,direct直接地址“与”到AANLA,@Ri间接RAM“与”到AANLA,#data立即数“与”到AANLdirect,AA“与”到直接地址ANLdirect,#data立即数“与”到直接地址ORLA,RnRn“或”到AORLA,direct直接地址“或”到AORLA,@Ri间接RAM“或”到AORLA,#data 立即数“或”到AORLdirect,AA“或”到直接地址ORLdirect,#data立即数“或”到直接地址XRLA,RnRn“异或”到AXRLA,direct直接地址“异或”到AXRLA,@Ri间接RAM“异或”到AXRLA,#data立即数“异或”到AXRLdirect,AA“异或”到直接地址XRLdirect,#data立即数“异或”到直接地址CLRAA清零CPLAA求反RLAA循环左移RLCA带进位A循环左移RRAA循环右移RRCA带进位A 循环右移SWAPAA高、低4位交换1__-__-__字节__-__-__-__1__周期__-__-__-__1序号__-__-__-__7序号__-__-__-__7指令格式JMP@A+DPTRJZrelJNZrelCJNEA,direct,relCJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,relDJNZRn,relDJNZdirect,relNOPACALLadd11LCALLadd16__AJMPadd11LJMPadd16SJMPrel指令格式__bit__TBbit__bitANLC,bitANLC,/bitORLC,bitORLC,/bitMOVC,bitMOVbit,CJCrelJNCrelJBbit,relJNBbit,relJBCbit,rel 伪指令控制转移类指令指令功能相对DPTR的无条件间接转移A为0则转移A为1则转移比较直接地址和A,不相等转移比较立即数和A,不相等转移比较Rn和立即数,不相等转移字节__周期__-__-__2周期__-__-__2比较立即数和间接RAM,不相等转3移Rn减1,不为0则转移2直接地址减1,不为0则转移3空操作,用于短暂延时1绝对调用子程序2长调用子程序3从子程序返回1从中断服务子程序返回1无条件绝对转移2无条件长转移3无条件相对转移2 位操作指令指令功能字节清进位位1清直接寻址位2置位进位位1置位直接寻址位2取反进位位1取反直接寻址位2直接寻址位“与”到进位位2直接寻址位的反码“与”到进位位2直接寻址位“或”到进位位2直接寻址位的反码“或”到进位位2直接寻址位传送到进位位2进位位位传送到直接寻址2如果进位位为1则转移2如果进位位为0则转移2如果直接寻址位为1则转移3如果直接寻址位为0则转移3直接寻址位为1则转移并清除该3位指令中的符号标识__TEND$指明程序的开始位置定义数据表定义16位的地址表RnRi@Ri工作寄存器R0-R7工作寄存器R0和R1间接寻址的8位RAM单元地址(00H-FFH)8位常数16位目标地址,范围64KB11位目标地址,范围2KB8位偏移量,范围-128~+127片内RAM中的可寻址位和SFR的可寻址位直接地址,范围片内RAM单元(00H-7FH)和80H-FFH给一个表达式或一个字符串#data8起名给一个8位的内部RAM起名addr16给一个8位的外部RAM起名addr11给一个可位寻址的位单元起。
C语言指令集
main【主涵数】auto【{加在涵数名前}自动储存类变量】------------------短register【{加在涵数名前}寄存器储存类变量】|extern【{加在涵数名前}外部储存类{可以不加}】|static【{加在涵数名前}静态储存类变量】----------------长void【没反回值】for【{3个条件语句}循环】while【{循环】do while【{前do循环体语句,后while条件语句}循环】if【{else补充语句,该短语只可有一个}{else if短语可有N个}条件】switch()【{case条件:程序段}{default条件不满足程序段}{break结束语}开关】goto【没条件转向】break【{适合于各种方式的循环}结果语】continue【判断结束语】return【反回语句】bool【布尔型变量】int【整型】-----------------------------低unsigned【没符号字符型】|long【长整型】|double【双精度浮点型】------------------高short【短整型】unsigned【没符号整型】unsigned short【没符号短整型】unsigned long【没符号长整型】char【字符型】float【单精度浮点型】()【括号】-----------------------优[]【下标】先,【合成表达式】级------结合性:左到右→,.【成员】:return【返回】-------------------0!【{真为假,假为真}非】-------------------------优~【位非】先++【{前缀表达式增1.后缀表达式不增1}增1】级--【{前缀表达式减1.后缀表达式不减1}减1】:-【求反】1------结合性:右到左(())【强制类型】|*【{指针运算符}取内容】|&【{指针运算符}取地址】|sizeof【字节数】--------------------------------|*【乘】--------------优---------------------------------------|/【除】先:3 |%【求余】------------级|+【加】----------优先|-【减】----------级:4 |<<【{只改表达式的值}左移】---------优先|>>【{只改表达式的值}右移】---------级:5 |>【大于】---------------优|<【小于】先6 |---结合性:左到右>=【大于等于】级|<=【小于等于】----------:|==【等于】----------优先级|!=【不等于】-------:7 |&【位与】--------优先级:8 |^【位异或】--------优先级:9 ||【位或】-------优先级:10 |&&【{都为真即真}与】-------优先级:11 |||【{都为假即假}或】-------优先级:12------------------------|表达式1?表达式2:表达式3【{真为第一个表达式,假为第二个表达式}条件求值】-----------------------------------------------------------------优先级:13------------------| =【简单赋值】----------------------------优|---结合性:右到左+=,-=,*=,/=,%=【复合算术赋值】先:14 | &=,|=,^=,>>=,<<=【复合位运算赋值】--------级-------------------------|,【句号】-------优先级:15-------结合性:左到右malloc【申请动态内存】struct【结构定义】*/【注释符】\n【换行符】\t【水平制表】\b【退格】\a【鸣铃】\'【单引号】\r【回车】\v【垂直制表】\f【走纸换页】\\【反斜线】\0【ASCII码为0的字符】<<=【{改变变量值}左移】>>=【{改变变量值}右移】*【{指针运算符}取内容】&【{指针运算符}取地址】sizeof【计算数据类型所占的字节数】getchar()【接收字符型输入{带缓冲区和回显}】gets()【接收字符串型输入】scanf()【标准格式输入】%d{十进制整数}%x{十六进制整数}%o{八进制整数}%u{没符号十进制整数}%f{小数表示的浮数点数}%e{指数表示的浮数点数}%c{单个字符}%s{字符串}【标准格式输入的格式说明符】putchar()【字符型输出】puts()【字符串型输出】printf()【标准格式输出】%d{十进制整数}%x{十六进制整数}%o{八进制整数}%u{没符号整数}%f{小数表示的浮数点数}%e{指数表示的浮数点数}%c{单个字符}%s{字符串}g{e和f中较短的一种}【标准格式输出的格式说明符】#define【宏定义】undef【终止宏定义】。
单片机指令大全
引言概述:单片机指令是嵌入式系统设计中至关重要的一部分,它们定义了单片机的功能和操作。
本文是单片机指令大全系列的第二部分,旨在提供更多全面的单片机指令信息,帮助读者更好地理解和应用单片机指令。
正文内容:一、移位指令1.逻辑左移指令:将操作数的每一位向左移动一位,并且最低位填充0。
2.逻辑右移指令:将操作数的每一位向右移动一位,并且最高位填充0。
3.算术右移指令:将操作数的每一位向右移动一位,并且最高位保持不变。
4.循环左移指令:将操作数的每一位向左循环移动一位,即最高位移动到最低位。
5.循环右移指令:将操作数的每一位向右循环移动一位,即最低位移动到最高位。
二、逻辑运算指令1.逻辑与指令:对操作数进行逻辑与运算,将两个二进制数对应位上的值进行逻辑与操作。
2.逻辑或指令:对操作数进行逻辑或运算,将两个二进制数对应位上的值进行逻辑或操作。
3.逻辑非指令:对操作数进行逻辑非运算,将二进制数的每一位取反。
4.逻辑异或指令:对操作数进行逻辑异或运算,将两个二进制数对应位上的值进行逻辑异或操作。
5.逻辑移位指令:将操作数进行逻辑左移或右移。
三、算术运算指令1.加法指令:对操作数进行加法运算,并将运算结果保存到指定的寄存器或存储器中。
2.减法指令:对操作数进行减法运算,并将运算结果保存到指定的寄存器或存储器中。
3.乘法指令:对操作数进行乘法运算,并将运算结果保存到指定的寄存器或存储器中。
4.除法指令:对操作数进行除法运算,并将运算结果保存到指定的寄存器或存储器中。
5.移位指令:对操作数进行移位运算,包括算术左移、算术右移、循环左移和循环右移。
四、输入输出指令1.读取输入指令:从指定的输入设备读取数据,并将数据保存到指定的寄存器或存储器中。
2.输出显示指令:将指定的数据从寄存器或存储器中读取,并显示到指定的输出设备上。
3.端口输入指令:从指定的端口读取数据,并将数据保存到指定的寄存器或存储器中。
4.端口输出指令:将指定的数据从寄存器或存储器中读取,并输出到指定的端口上。
C51指令表
)→))C51汇编伪指令:1、DS ---预留存储区命令格式:〔标号:〕DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。
存储区预留的存储单元数由表达式的值决定。
TMP: DS 1从标号TEP地址处开始保留1个存储单元(字节)。
2、BIT---定义位命令格式:字符名称BIT 位地址其功能用于给字符名称定义位地址。
SPK BIT P3.7经定义后,允许在指令中用SPK代替P3.7。
3、USING指令USING指令通知汇编器使用8051的哪一个工作寄存器组。
格式:USING 表达式(值必须为0-3,默认值为0。
)USING 0使用第0组工作寄存器。
4、SEGMENT指令SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。
格式:再定位段名SEGMENT 段类型〔再定位类型〕其中,“再定位段名”用于指明所声明的段。
“段类型”用于指定所声明的段将处的存储器地址空间。
可用的段类型有CODE、XDA TA、DA TA、IDA TA和BIT。
STACK_SEG SEGMENT IDA TADA TA_SEG SEGMENT DATA5、RSEG---再定位段选择指令再定位段选择指令为RSEG,用于选择一个已在前面定义过的再定位段作为当前段。
格式:RSEG 段名段名必须是在前面已经声明过的再定位段。
DA TA_SEG SEGMENT DATA ;声明一个再定位DATA段RSEG DATA_SEG ;选择前面声明的再定位DA TA段作为当前段6、绝对段选择指令CSEG---绝对代码段DSEG---内部绝对数据段XSEG---外部绝对数据段ISEG---内部间接寻址数据段BSEG---绝对位寻址数据段格式:CSEG [AT 绝对地址表达式]DSEG [AT 绝对地址表达式]XSEG [AT 绝对地址表达式]ISEG [AT 绝对地址表达式]BSEG [AT 绝对地址表达式]括号内是可选项,用来指定当前绝对段的基地址。
C51单片机指令集大全
精心整理格式功能简述字节数周期一、数据传送类指令MOVA,Rn寄存器送累加器11MOVRn,A累加器送寄存器11MOVA,@Ri内部RAM单元送累加器11MOVXA,@DPTR外部RAM单元送累加器(16位地址)12MOVX@DPTR,A累加器送外部RAM单元(16位地址)12MOVCA,@A+DPTR查表数据送累加器(DPTR为基址)12MOVCA,@A+PC查表数据送累加器(PC为基址)12XCHA,Rn累加器与寄存器交换11XCHA,@Ri累加器与内部RAM单元交换11XCHDA,direct累加器与直接寻址单元交换21 XCHDA,@Ri累加器与内部RAM单元低4位交换11 SWAPA累加器高4位与低4位交换11POPdirect栈顶弹出指令直接寻址单元22 PUSHdirect直接寻址单元压入栈顶22二、算术运算类指令SUBBA,@Ri累加器减内部RAM单元和进位标志11 SUBBA,#data累加器减立即数和进位标志21 SUBBA,direct累加器减直接寻址单元和进位标志21 DECA累加器减111DECRn寄存器减111DEC@Ri内部RAM单元减111DECdirect直接寻址单元减121MULAB累加器乘寄存器B14DIVAB累加器除以寄存器B14三、逻辑运算类指令ANLA,Rn累加器与寄存器11ANLA,@Ri累加器与内部RAM单元11XRLdirect,#data直接寻址单元异或立即数32 RLA累加器左循环移位11RLCA累加器连进位标志左循环移位11RRA累加器右循环移位11RRCA累加器连进位标志右循环移位11CPLA累加器取反11CLRA累加器清零11四、控制转移类指令类ACCALLaddr112KB范围内绝对调用22 AJMPaddr112KB范围内绝对转移22 LCALLaddr162KB范围内长调用32 LJMPaddr162KB范围内长转移32MOVbit,CC送直接寻址位21 CLRCC清零11CLRbit直接寻址位清零21CPLCC取反11CPLbit直接寻址位取反21 SETBCC置位11SETBbit直接寻址位置位21ANLC,bitC逻辑与直接寻址位22ANLC,/bitC逻辑与直接寻址位的反22ORLC,bitC逻辑或直接寻址位22ORLC,/bitC逻辑或直接寻址位的反22JCrelC为1转移22MOVA,#0FFHMOVP1,#0FFH;开始时全灭;-------------------------------逐个点亮MOVR2,#8LOOP1:CLRCRLCAMOVP1,ACALLDL500MSDJNZR2,LOOP1CALLDL500MS;0.5sDJNZR2,LOOP3;------------------------------- DJNZR3,LOOP0MOVP1,#01001001B;5、显示为01001001 CALLDL500MSCALLDL500MS;共1sSJMP0000H;重新开始N遍;-------------------------------延时子程序。
MCS-51单片机汇编指令集
MCS-51单片机汇编指令集2009-06-01 13:56MCS-51单片机汇编指令集(1)数据传送类指令(7种助记符)1.MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;2.MOVC(Move Code)读取程序存储器数据表格的数据传送;3.MOVX (Move External RAM) 对外部RAM的数据传送;4.XCH (Exchange) 字节交换;5.XCHD (Exchange low-order Digit) 低半字节交换;6.PUSH (Push onto Stack) 入栈;7.POP (Pop from Stack) 出栈;(2)算术运算类指令(8种助记符)1.ADD(Addition) 加法;2.ADDC(Add with Carry) 带进位加法;3.SUBB(Subtract with Borrow) 带借位减法;4.DA(Decimal Adjust) 十进制调整;5.INC(Increment) 加1;6.DEC(Decrement) 减1;7.MUL(Multiplication、Multiply) 乘法;8.DIV(Division、Divide) 除法;(3)逻辑运算类指令(10种助记符)1.ANL(AND Logic) 逻辑与;2.ORL(OR Logic) 逻辑或;3.XRL(Exclusive-OR Logic) 逻辑异或;4.CLR(Clear) 清零;5.CPL(Complement) 取反;6.RL(Rotate left) 循环左移;7.RLC(Rotate Left throught the Carry flag) 带进位循环左移;8.RR(Rotate Right) 循环右移;9.RRC (Rotate Right throught the Carry flag) 带进位循环右移;10.SWAP (Swap) 低4位与高4位交换;(4)控制转移类指令(17种助记符)1.ACALL(Absolute subroutine Call)子程序绝对调用;2.LCALL(Long subroutine Call)子程序长调用;3.RET(Return from subroutine)子程序返回;4.RETI(Return from Interruption)中断返回;5.SJMP(Short Jump)短转移;6.AJMP(Absolute Jump)绝对转移;7.LJMP(Long Jump)长转移;8C.JNE (Compare Jump if Not Equal)比较不相等则转移;9D.JNZ (Decrement Jump if Not Zero)减1后不为0则转移;10.JZ (Jump if Zero)结果为0则转移;11.JNZ (Jump if Not Zero) 结果不为0则转移;12.JC (Jump if the Carry flag is set)有进位则转移;13.JNC (Jump if Not Carry)无进位则转移;14.JB (Jump if the Bit is set)位为1则转移;15.JNB (Jump if the Bit is Not set) 位为0则转移;16.JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;17.NOP (No Operation) 空操作;(5)位操作指令(1种助记符)1.SETB(Set Bit) 位置1。
单片机指令表(全部)
单片机指令以 A 开头的指令有 18 条,分别为:1 、 ACALL addr11 指令名称:绝对调用指令 指令代码: A10A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。
其方法是以指令提 供的 11 位地址 (al0 ~ a0) ,取代 PC 的低 11 位, PC 的高 5 位不 操作内容: PC ←(PC)+2 (SP)← (PC)7 ~ 0 (SP)← (PC)15 ~ 8 字节数: 2 7 、 ADDC A ,direct 指令名称:直接寻址带进位加法指令 指令代码: 35H 指令功能:累加器内容、内部 RAM 低 128 单元或专用寄存器内 容与进位位加操作内容: A ← (A)+(direct)+(C) 字节数: 2 机器周期: 1 影响标志位: C , AC ,OVSP ←(SP)+1 SP ←(SP)+1 PC10 ~ 0 ← addrl0 ~0 机器周期: 2 使用说明:由于指令只给出子程序入口地址的低 11 位,因此调 用范围是 2KB 2 、 ADD ,Rn 指令名称: 寄存器加法指令 指令功能: 累加器内容与寄存器内容相加 操作内容: A ←(A)+(Rn) , n =0~7 字节数: 1 机器周期; 影响标志位 : C , AC ,OV指令代码:28H ~ 2FH 3 、 ADD A , direct 指令名称:直接寻址加法指令 指令代码: 25H 指令功能:累加器内容与内部 RAM 单元或专用寄存器内容相加 操作内容: A ← (A)+(direct) 字节数: 2 机器周期: 1 影响标志位: C , AC ,OV 4 、 ADD A ,@ Ri '指令名称:间接寻址加法指令 指令代码:26H ~ 27H 指令功能:累加器内容与内部 RAM 低 128 单元内容相加 操作内容: A ←(A)+((Ri)) , i =0,1 字节数: 1 机器周期: 1 影响标志位: C , AC ,OV 5 、 ADD A , #data 指令名称: 立即数加法指令 指令代码: 24H 指令功能: 累加器内容与立即数相加操作内容:A ← (A)+data字节数: 2 机器周期: 1 影响标志位 : C , AC ,OV6 、 ADDC A , Rn 指令名称:寄存器带进位加法指令 指令代码:38H ~ 3FH 指令功能:累加器内容、寄存器内容和进位位相加 操作内容: A ←(A)+(Rn)+(C) , n =0~7 字节数: 1 机器周期: 1 影响标志位:C , AC ,OV8 、 ADDC A ,@Ri 指令名称:间接寻址带进位加法指令 指令代码: 36H ~37H指令功能:累加器内容 , 内部 RAM 低 128 单元内容及进位位相 加操作内容: A ← (A)+((Ri))+(C) , i = 0,1 字节数: 1 机器周期: 1 影响标志位: C , AC ,OV9 、 ADDC A ,#data 指令名称:立即数带进位加法指令指令功能:累加器内容、立即数及进位位相加 操作内容: A ← (A)+data+(C) 字节数: 2 机器周期: 1 影响标志位:C , AC ,OV指令代码: 34H10 、 AJMP addr11 指令名称:绝对转移指令 指令代码: A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。
c51单片机c语言常用指令 -回复
c51单片机c语言常用指令-回复C51单片机C语言常用指令导语:C51单片机是一种非常常用的微控制器,它广泛应用于许多嵌入式系统和电子设备中。
在单片机的开发过程中,C语言是一种非常常用的编程语言。
本文将介绍C51单片机常用的指令,帮助读者了解这些指令的功能和使用方法。
第一部分:常用的I/O口控制指令I/O口控制指令是C51单片机中非常重要的一部分,因为它们用于控制单片机与外部设备之间的数据交互。
以下是一些常用的I/O口控制指令:- P0:将P0口设置为输入或输出,可以用于与外部设备进行数据通信。
- P1:将P1口设置为输入或输出,可以用于与外部设备进行数据通信。
- P2:将P2口设置为输入或输出,可以用于与外部设备进行数据通信。
- P3:将P3口设置为输入或输出,可以用于与外部设备进行数据通信。
第二部分:常用的中断控制指令中断是C51单片机中实现实时响应的重要机制之一。
以下是一些常用的中断控制指令:- EA:使能所有中断。
- EX0:外部中断0的控制指令,用于外部设备产生中断信号。
- EX1:外部中断1的控制指令,用于外部设备产生中断信号。
- IT0:外部中断0的触发方式,可以设置为电平触发或边沿触发。
- IT1:外部中断1的触发方式,可以设置为电平触发或边沿触发。
第三部分:常用的定时器控制指令定时器是C51单片机中实现时间计数和定时任务的重要模块。
以下是一些常用的定时器控制指令:- TMOD:设置定时器模式,可以选择定时器0/1的工作模式。
- TL0、TL1:定时器0/1的低8位计数器,用于保存定时值的低8位。
- TH0、TH1:定时器0/1的高8位计数器,用于保存定时值的高8位。
- TR0、TR1:定时器0/1的运行控制位,用于启动和停止计时器。
- TF0、TF1:定时器0/1的溢出标志位,用于判断定时器是否溢出。
第四部分:常用的串口通信指令串口通信是C51单片机中常用的通信方式之一,用于与其他设备进行数据交互。
单片机常用c代码
单片机常用c代码在单片机领域,C语言是最常用的编程语言之一。
它具有简单易学、灵活高效的特点,被广泛应用于单片机系统的开发中。
本文将介绍一些常用的单片机C代码,为读者提供参考和学习的资源。
一、IO口控制单片机的IO口是与外部设备连接的重要接口,通过控制IO口的高低电平来实现与外部设备的通信。
以下是常见的IO口控制代码示例:1. 设置IO口为输出模式:```c#define LED_PIN 0 // 指定IO口引脚号void setup() {pinMode(LED_PIN, OUTPUT); // 设置IO口为输出模式}void loop() {digitalWrite(LED_PIN, HIGH); // 设置IO口为高电平delay(1000); // 延迟1秒digitalWrite(LED_PIN, LOW); // 设置IO口为低电平delay(1000); // 延迟1秒```2. 设置IO口为输入模式:```c#define BUTTON_PIN 1 // 指定IO口引脚号void setup() {pinMode(BUTTON_PIN, INPUT); // 设置IO口为输入模式}void loop() {if (digitalRead(BUTTON_PIN) == HIGH) { // 判断IO口电平是否为高电平// 执行相应操作}}```二、定时器控制定时器是单片机中的重要组件,可用于实现精确的时间控制和周期性任务。
以下是常见的定时器控制代码示例:1. 设置定时器计数器和预分频值:void setup() {TCCR1B = (1 << CS12) | (1 << CS10); // 设置定时器1的预分频为1024}void loop() {// 执行相应操作}```2. 设置定时器中断服务程序:```cISR(TIMER1_COMPA_vect) {// 定时器1比较匹配中断服务程序}void setup() {TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); // 设置定时器1的CTC模式和预分频为1024OCR1A = 15624; // 设置定时器1的比较匹配值,实现1秒中断一次TIMSK1 = (1 << OCIE1A); // 允许定时器1比较匹配中断}void loop() {// 执行相应操作}```三、串口通信串口通信是单片机与计算机或其他外部设备进行数据交互的常用方式。
C单片机指令集大全
格式功能简述字节数周期一、数据传送类指令MOVA,Rn寄存器送累加器11MOVRn,A累加器送寄存器11MOVA,@Ri内部RAM单元送累加器11MOV@Ri,A累加器送内部RAM单元11MOVA,#data立即数送累加器21MOVA,direct直接寻址单元送累加器21MOVdirect,A累加器送直接寻址单元21MOVRn,#data立即数送寄存器21MOVdirect,#data立即数送直接寻址单元32MOV@Ri,#data立即数送内部RAM单元21MOVdirect,Rn寄存器送直接寻址单元22MOVRn,direct直接寻址单元送寄存器22MOVdirect,@Ri内部RAM单元送直接寻址单元22MOV@Ri,direct直接寻址单元送内部RAM单元22MOVdirect2,direct1直接寻址单元送直接寻址单元32 MOVDPTR,#data1616位立即数送数据指针32MOVXA,@Ri外部RAM单元送累加器(8位地址)12MOVX@Ri,A累加器送外部RAM单元(8位地址)12MOVXA,@DPTR外部RAM单元送累加器(16位地址)12MOVX@DPTR,A累加器送外部RAM单元(16位地址)12MOVCA,@A+DPTR查表数据送累加器(DPTR为基址)12 MOVCA,@A+PC查表数据送累加器(PC为基址)12 XCHA,Rn累加器与寄存器交换11XCHA,@Ri累加器与内部RAM单元交换11 XCHDA,direct累加器与直接寻址单元交换21 XCHDA,@Ri累加器与内部RAM单元低4位交换11 SWAPA累加器高4位与低4位交换11POPdirect栈顶弹出指令直接寻址单元22 PUSHdirect直接寻址单元压入栈顶22二、算术运算类指令ADDA,Rn累加器加寄存器11ADDA,@Ri累加器加内部RAM单元11ADDA,direct累加器加直接寻址单元21ADDA,#data累加器加立即数21ADDCA,Rn累加器加寄存器和进位标志11ADDCA,@Ri累加器加内部RAM单元和进位标志11 ADDCA,#data累加器加立即数和进位标志21 ADDCA,direct累加器加直接寻址单元和进位标志21 INCA累加器加111INCRn寄存器加111INCdirect直接寻址单元加121INC@Ri内部RAM单元加111INCDPTR数据指针加112DAA十进制调整11SUBBA,Rn累加器减寄存器和进位标志11SUBBA,@Ri累加器减内部RAM单元和进位标志11 SUBBA,#data累加器减立即数和进位标志21 SUBBA,direct累加器减直接寻址单元和进位标志21 DECA累加器减111DECRn寄存器减111DEC@Ri内部RAM单元减111DECdirect直接寻址单元减121MULAB累加器乘寄存器B14DIVAB累加器除以寄存器B14三、逻辑运算类指令ANLA,Rn累加器与寄存器11ANLA,@Ri累加器与内部RAM单元11ANLA,#data累加器与立即数21ANLA,direct累加器与直接寻址单元21 ANLdirect,A直接寻址单元与累加器21 ANLdirect,#data直接寻址单元与立即数31 ORLA,Rn累加器或寄存器11ORLA,@Ri累加器或内部RAM单元11ORLA,#data累加器或立即数21ORLA,direct累加器或直接寻址单元21 ORLdirect,A直接寻址单元或累加器21ORLdirect,#data直接寻址单元或立即数31 XRLA,Rn累加器异或寄存器11XRLA,@Ri累加器异或内部RAM单元11 XRLA,#data累加器异或立即数21XRLA,direct累加器异或直接寻址单元21 XRLdirect,A直接寻址单元异或累加器21 XRLdirect,#data直接寻址单元异或立即数32 RLA累加器左循环移位11RLCA累加器连进位标志左循环移位11RRA累加器右循环移位11RRCA累加器连进位标志右循环移位11CPLA累加器取反11CLRA累加器清零11四、控制转移类指令类ACCALLaddr112KB范围内绝对调用22 AJMPaddr112KB范围内绝对转移22 LCALLaddr162KB范围内长调用32LJMPaddr162KB范围内长转移32SJMPrel相对短转移22JMP@A+DPTR相对长转移12RET子程序返回12RET1中断返回12JZrel累加器为零转移22JNZrel累加器非零转移22CJNEA,#data,rel累加器与立即数不等转移32 CJNEA,direct,rel累加器与直接寻址单元不等转移32 CJNERn,#data,rel寄存器与立即数不等转移32CJNE@Ri,#data,relRAM单元与立即数不等转移32 DJNZRn,rel寄存器减1不为零转移22DJNZdirect,rel直接寻址单元减1不为零转移32 NOP空操作11五、布尔操作类指令MOVC,bit直接寻址位送C21MOVbit,CC送直接寻址位21CLRCC清零11CLRbit直接寻址位清零21CPLCC取反11CPLbit直接寻址位取反21SETBCC置位11SETBbit直接寻址位置位21ANLC,bitC逻辑与直接寻址位22ANLC,/bitC逻辑与直接寻址位的反22ORLC,bitC逻辑或直接寻址位22ORLC,/bitC逻辑或直接寻址位的反22JCrelC为1转移22JNCrelC为零转移22JBbit,rel直接寻址位为1转移32JNBbit,rel直接寻址为0转移1、D1~D8八个彩灯按规定顺序依次点亮(间隔1秒),最后全亮;2、按规定顺序依次熄灭(间隔1秒),最后全灭;3、八个灯同时点亮,保持1秒;4、八个灯同时熄灭,保持0.5秒;再将第3、4步重复4遍,最后整个程序再重复N遍。
51单片机C语言指令
sfr16 2 字节 0~65535
有符号整形 (signed)ind 16位 -32767-+32767
(signed)short 16位 -32767-+23767
(signed)long 32位 -2147483648-+214748364
简单的单片机C程序要有什么
1)头文件 (#include<re51.h>)
2)主函数 (void main)
3)执行部分
C语言中常用的语句
1)选择语句(if-else)
2)循环语句(while)
3)循环语句(do while)
4)循环语句(for( ; ; ))
C-51的运算符
do-while 循环语句
C-51的数据类型
sbit(位)
把变量另外取名#define a P2 (把P2另外取名为a)
基本数据类型
bit 1 字节 0 或 1
signed char 1 字节 -128~+127
unsigned char 1 字节 0~255
signed int 2 字节 -32768~+32867
unsigned int 2 字节 0~65535
signed long 4 字节 -2147483648~+2147483647
unsigned long 4 字节 0~4294967295
float 4 字节 ±1.176E-38~±3.40E+38
指针 1~3 字节 对象地址
sbit 1 位 0 或 1
== != (等于 不等于)
MCS-51指令集
MCS-51单片机的指令集。
MCS-51系列单片机的指令系统,按功能分类可分为:数据传送、算术操作、逻辑操作、控制转移和布尔变量操作等五种。
1.数据传送类指令:助记符功能说明字节数振荡周期MOV A,Rn寄存器内容送入累加器112 MOV A,direct直接地址单元中的数据送入累加器212 MOV A,@Ri间接RAM中的数据送入累加器112 MOV A,#data88位立即数送入累加器212 MOV Rn,A累加器内容送入寄存器112 MOV Rn,direct直接地址单元中的数据送入寄存器224 MOV Rn,#data88位立即数送入寄存器212 MOV direct,A累加器内容送入直接地址单元212 MOV direct,Rn寄存器内容送入直接地址单元224 MOV direct,direct直接地址单元中的数据送入直接地址单元324 MOV direct,@Ri间接RAM中的数据送入直接地址单元224 MOV direct,#data88位立即数送入直接地址单元324 MOV @Ri,A累加器内容送入间接RAM单元112 MOV @Ri,direct直接地址单元中的数据送入间接RAM单元224 MOV @Ri,#data88位立即数送入间接RAM单元212 MOV DPTR,#data1616位立即数地址送入地址寄存器324MOV A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器124MOV A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加器124MOV A,@Ri外部RAM(8位地址)送入累加器124 MOV A,@DPTR外部RAM(16位地址)送入累加器124 MOV @Ri,A累加器送入外部RAM(8位地址)124 MOV @DPTR,A累加器送入外部RAM(16位地址)124 PUSH direct直接地址单元中的数据压入堆栈224 POP DIRECT堆栈中的数据弹出到直接地址单元224 XCH A,Rn寄存器与累加器交换112 XCH A,direct直接地址单元与累加器交换212 XCH A,@Ri间接RAM与累加器交换112 XCHD A,@Ri间接RAM与累加器进行低半字节交换1122.算术操作类指令:助记符功能说明字节数振荡周期ADD A,Rn寄存器内容加到累加器112 ADD A,direct直接地址单元加到累加器212 ADD A,@Ri间接RAM内容加到累加器112 ADD A,#data88位立即数加到累加器212 ADDC A,Rn寄存器内容带进位加到累加器112 ADDC A,dirct直接地址单元带进位加到累加器212 ADDC A,@Ri间接RAM内容带进位加到累加器112 ADDC A,#data88位立即数带进位加到累加器212 SUBB A,Rn累加器带借位减寄存器内容112 SUBB A,dirct累加器带借位减直接地址单元212 SUBB A,@Ri累加器带借位减间接RAM内容112 SUBB A,#data8累加器带借位减8位立即数212 INC A累加器加1112 INC Rn寄存器加1112 INC direct直接地址单元内容加1212 INC @Ri间接RAM内容加1112 INC DPTR DPTR加1124 DEC A累加器减1112 DEC Rn寄存器减1112 DEC direct直接地址单元内容减1212 DEC @Ri间接RAM内容减1112 MUL A,B A乘以B148 DIV A,B A除以B148 DA A累加器进行十进制转换1123.逻辑操作类指令:助记符功能说明字节数振荡周期ANL A,Rn累加器与寄存器相“与”112 ANL A,direct累加器与直接地址单元相“与”212 ANL A,@Ri累加器与间接RAM内容相“与”112 ANL A,#data8累加器与8位立即数相“与”212 ANL direct,A直接地址单元与累加器相“与”212 ANL direct,#data8直接地址单元与8位立即数相“与”324ORL A,Rn累加器与寄存器相“或”112 ORL A,direct累加器与直接地址单元相“或”212 ORL A,@Ri累加器与间接RAM内容相“或”112 ORL A,#data8累加器与8位立即数相“或”212 ORL direct,A直接地址单元与累加器相“或”212 ORL direct,#data8直接地址单元与8位立即数相“或”324 XRL A,Rn累加器与寄存器相“异或”112 XRL A,direct累加器与直接地址单元相“异或”212 XRL A,@Ri累加器与间接RAM内容相“异或”112 XRL A,#data8累加器与8位立即数相“异或”212 XRL direct,A直接地址单元与累加器相“异或”212 XRL direct,#data8直接地址单元与8位立即数相“异或”324 CLR A累加器清0112 CPL A累加器求反112 RL A累加器循环左移112 RLC A累加器带进位循环左移112 RR A累加器循环右移112 RRC A累加器带进位循环右移112 SWAP A累加器半字节交换1124.控制转移类指令:(返回)助记符功能说明字节数振荡周期ACALL addr11绝对短调用子程序224 LACLL addr16长调用子程序324 RET子程序返回124 RETI中断返回124 AJMP addr11绝对短转移224 LJMP addr16长转移324 SJMP rel相对转移224 JMP @A+DPTR相对于DPTR的间接转移124JZ rel累加器为零转移224 JNZ rel累加器非零转移224 CJNE A,direct,rel累加器与直接地址单元比较,不等则转移324 CJNE A,#data8,rel累加器与8位立即数比较,不等则转移324 CJNE Rn,#data8,rel寄存器与8位立即数比较,不等则转移324 CJNE @Ri,#data8,rel间接RAM单元,不等则转移324 DJNZ Rn,rel寄存器减1,非零转移324 DJNZ direct,rel直接地址单元减1,非零转移324 NOP空操作1125.布尔变量操作类指令:助记符功能说明字节数振荡周期CLR C清进位位112 CLR bit清直接地址位212 SETB C置进位位112 SETB bit置直接地址位212 CPL C进位位求反112 CPL bit直接地址位求反212 ANL C,bit进位位和直接地址位相“与”224 ANL C,bit进位位和直接地址位的反码相“与”224 ORL C,bit进位位和直接地址位相“或”224 ORL C,bit进位位和直接地址位的反码相“或”224 MOV C,bit直接地址位送入进位位212 MOV bit,C进位位送入直接地址位224 JC rel进位位为1则转移224 JNC rel进位位为0则转移224 JB bit,rel直接地址位为1则转移324 JNB bit,rel直接地址位为0则转移324 JBC bit,rel直接地址位为1则转移,该位清零324。
单片机汇编语言(指令集锦)
单片机汇编语言一、格式[标号]:操作码[操作数];[注释]1.标号指令的符号地址,与操作码用‘:’分隔,其间可加若干空格。
有标号,程序的其他语句才可访问该语句。
可有可无。
规定:由8个以内的字母、数字构成,第一个必为字母,同一程序不可有相同标号,不能有助记符、伪指令、寄存器名、特殊符号等。
正确标号:AB1、NEXT、LOOP1。
错误标号:2A、S+M、EQU、ADD。
2.操作码说明语句功能,必不可少。
与操作数之间用空格相隔。
3.操作数说明操作对象。
可以是具体的数、标号(符号地址)、寄存器、直接地址等。
操作数为十六进制,且字母在最高位,则前面应补0.据指令之异,个数可为1、2、3或无。
各操作间用‘,’相隔。
4.注释程序说明。
以‘;’开头,可多行,每行都以‘;’开头。
二、寻址方式寻找操作数的地址。
1.寄存器寻址以通用寄存器的内容作为操作数,在指令的助记符中直接以寄存器名字来表示操作数位置。
51中若操作数以R0~R7表示操作数时,就属于此方式。
如:‘MOV A,R0’,功能:把寄存器R0的内容传送到累加器A中。
2.直接寻址在指令中直接给出操作数地址。
如:MOV ‘A,3AH’,功能:把内部RAM的3AH单元内容传送到累加器A中。
3.立即寻址指令的操作数是一个数。
该操作数被称为立即数。
立即数前加‘#’,如:’MOV A,#3AH’,功能:把立即数3AH送到累加器A中。
4.寄存器间接寻址寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,相应的寄存器前加@。
如:‘MOV A,@R0’,功能:取出寄存器R0中的值,将此值作为地址,取该地址单元中的内容传送到A。
5.变址寻址以某个寄存器的内容为基本地址,在此基本地址基础上加上地址偏移量作为真正的操作地址,并将此地址单元的内容作为指令的操作数。
51中,一般用数据指针DPTR或程序计数器PC的内容为基本地址,累加器A的内容为地址偏移量,并以DPTR+A或PC+A的值作为实际的操作数地址。
(完整版)C51单片机汇编语言指令集,推荐文档
的逻辑判断,结果存回累加器
ANL 1 1 将累加器的值与间接地址的内容做AND
A,@Ri
的逻辑判断,结果存回累加器
ANL 2 1 将累加器的值与常数做AND的逻辑判断,
A,#data
结果存回累加器
ANL 2 1 将直接地址的内容与累加器的值做AND
direct,A
的逻辑判断,结果存回该直接地址
ANL
1 1 将累加器的值减去寄存器的值减借 位C,结果存回累加器
2 1 将累加器的值减直接地址的值减借 位C,结果存回累加器
1 1 将累加器的值减间接地址的值减借
A,@Ri 12.SUBB A,0data
位C,结果存回累加器 2 1 将累加器的值减常数值减借位C,结
果存回累加器
13.INC A 1 1 将累加器的值加1 14.INC Rn 1 1 将寄存器的值加l
51汇编语言指令集
符号定义表
符号
含义
Rn
R0~R7寄存器n=0~7
Direct 直接地址,内部数据区的地址 RAM(00H~7FH)
SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON, P1,TCON,P0
@Ri
间接地址Ri=R0或R1
8051/31RAM地址
(00H~7FH) 8052/32RAM地址(00H~FFH)
44.CPL A 1 1 将累加器的值反相
45.RL A 1 1 将累加器的值左移一位
46.RLC A 1 1 将累加器含进位C左移一位
47.RR A 1 1 将累加器的值右移一位
48.RRC A 1 1 将累加器含进位C右移一位
49.SWAP 1 1 将累加器的高4位与低4位的内容交换。
80C51系列单片机指令表
标号:指令的符号地址. ⑴ 标号:指令的符号地址.
① 用于一段功能程序的识别标记或控制 转移地址. 转移地址. ② 指令前的标号代表该指令的地址, 指令前的标号代表该指令的地址, 用符号表示的地址. 是用符号表示的地址. 一般用英文字母和数字组成. ③ 一般用英文字母和数字组成. 标号必须用冒号" 与操作码分隔. ④ 标号必须用冒号" :"与操作码分隔.
【例】 MOV MOV
中
A,3 A,3AH A,P0
单元中的数据传送至A ;将内RAM 3AH单元中的数据传送至A中 将内RAM AH单元中的数据传送至 ;将特殊功能寄存器P0口中的数据传送至A 将特殊功能寄存器P0口中的数据传送至A P0口中的数据传送至
说明: AH和 是以direct形式出现的直接地址 说明:3AH和P0是以direct形式出现的直接地址 direct 访问特殊功能寄存器SFR SFR只能采用直接寻址方 访问特殊功能寄存器SFR只能采用直接寻址方 式.
注释:指令功能说明. ⑷ 注释:指令功能说明.
注释属于非必需项, 是为便于阅读, ① 注释属于非必需项 , 是为便于阅读 , 对指令功能作的说明和注解. 对指令功能作的说明和注解. ② 注释必须以";"开始. 注释必须以" 开始.
3.1.2 指令分类
80C51共有111条指令. 80C51共有111条指令. 共有111条指令
A,R0 MOV A,R0 INC A MUL AB ;将R0中的数据传送至A中 中的数据传送至A
⒋ 寄存器间接寻址
(完整版)单片机指令大全
一个单片机所需执行指令的集合即为单片机的指令系统。
单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。
现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。
但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。
所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。
在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。
但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。
所以现在基本上都不会直接使用机器语言来编写单片机的程序。
最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。
每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。
MCS-51共有111条指令,可分为5类:[1].数据传送类指令(共29条)[2].算数运算类指令(共24条)[3].逻辑运算及移位类指令(共24条)[4].控制转移类指令(共17条)[5].布尔变量操作类指令(共17条)一些特殊符号的意义在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。
Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。
c51单片机指令集-布尔变量操作
布尔变量操作指令
助记符
CLR CLR SETB SETB CPL CPL ANL ANL ORL ORL MOV MOV JC JNC JB JNB JBC
操作数
C bit C bit C bit C,bit C,/bit C,bit C,/bit C,bit bit,C rel rel bit,rel bit,rel bit,rel
说明
清零进位 清零直接位 置位进位 置位直接位 进位取反 直接位取反 直接数“与”到进位 直接位的反“与”到进位 直接位“或”到进位 直接位的反“或”到进位 直接位送进位 进位送直接位 进位为1转移 进位为0转移 直接位为1相对转移 直接位为0相对转移 直接位为1相对转移然后清0该位
代码
C3 C2 bit D3 D2 bit B3 B2 bit 82 bit B0 bit 72 bit A0 bit A2 bit 92 bit 40 rel 50 rel 20 bitrel 30 bitrel 10 bitrel
字节
1 2 1 2 1 2ຫໍສະໝຸດ 2 2 2 2 2 2 2 2 3 3 3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C单片机指令集大全 Document number【980KGB-6898YT-769T8CB-246UT-18GG08】
格式功能简述字节数周期
一、数据传送类指令
MOVA,Rn寄存器送累加器11
MOVRn,A累加器送寄存器11
MOVA,@Ri内部RAM单元送累加器11
MOV@Ri,A累加器送内部RAM单元11
MOVA,#data立即数送累加器21
MOVA,direct直接寻址单元送累加器21
MOVdirect,A累加器送直接寻址单元21
MOVRn,#data立即数送寄存器21
MOVdirect,#data立即数送直接寻址单元32
MOV@Ri,#data立即数送内部RAM单元21
MOVdirect,Rn寄存器送直接寻址单元22
MOVRn,direct直接寻址单元送寄存器22
MOVdirect,@Ri内部RAM单元送直接寻址单元22
MOV@Ri,direct直接寻址单元送内部RAM单元22
MOVdirect2,direct1直接寻址单元送直接寻址单元32 MOVDPTR,#data1616位立即数送数据指针32
MOVXA,@Ri外部RAM单元送累加器(8位地址)12
MOVX@Ri,A累加器送外部RAM单元(8位地址)12
MOVXA,@DPTR外部RAM单元送累加器(16位地址)12
MOVX@DPTR,A累加器送外部RAM单元(16位地址)12
MOVCA,@A+DPTR查表数据送累加器(DPTR为基址)12 MOVCA,@A+PC查表数据送累加器(PC为基址)12 XCHA,Rn累加器与寄存器交换11
XCHA,@Ri累加器与内部RAM单元交换11 XCHDA,direct累加器与直接寻址单元交换21 XCHDA,@Ri累加器与内部RAM单元低4位交换11 SWAPA累加器高4位与低4位交换11
POPdirect栈顶弹出指令直接寻址单元22 PUSHdirect直接寻址单元压入栈顶22
二、算术运算类指令
ADDA,Rn累加器加寄存器11
ADDA,@Ri累加器加内部RAM单元11
ADDA,direct累加器加直接寻址单元21
ADDA,#data累加器加立即数21
ADDCA,Rn累加器加寄存器和进位标志11
ADDCA,@Ri累加器加内部RAM单元和进位标志11 ADDCA,#data累加器加立即数和进位标志21 ADDCA,direct累加器加直接寻址单元和进位标志21 INCA累加器加111
INCRn寄存器加111
INCdirect直接寻址单元加121
INC@Ri内部RAM单元加111
INCDPTR数据指针加112
DAA十进制调整11
SUBBA,Rn累加器减寄存器和进位标志11
SUBBA,@Ri累加器减内部RAM单元和进位标志11 SUBBA,#data累加器减立即数和进位标志21 SUBBA,direct累加器减直接寻址单元和进位标志21 DECA累加器减111
DECRn寄存器减111
DEC@Ri内部RAM单元减111
DECdirect直接寻址单元减121
MULAB累加器乘寄存器B14
DIVAB累加器除以寄存器B14
三、逻辑运算类指令
ANLA,Rn累加器与寄存器11
ANLA,@Ri累加器与内部RAM单元11
ANLA,#data累加器与立即数21
ANLA,direct累加器与直接寻址单元21 ANLdirect,A直接寻址单元与累加器21 ANLdirect,#data直接寻址单元与立即数31 ORLA,Rn累加器或寄存器11
ORLA,@Ri累加器或内部RAM单元11
ORLA,#data累加器或立即数21
ORLA,direct累加器或直接寻址单元21 ORLdirect,A直接寻址单元或累加器21
ORLdirect,#data直接寻址单元或立即数31 XRLA,Rn累加器异或寄存器11
XRLA,@Ri累加器异或内部RAM单元11 XRLA,#data累加器异或立即数21
XRLA,direct累加器异或直接寻址单元21 XRLdirect,A直接寻址单元异或累加器21 XRLdirect,#data直接寻址单元异或立即数32 RLA累加器左循环移位11
RLCA累加器连进位标志左循环移位11
RRA累加器右循环移位11
RRCA累加器连进位标志右循环移位11
CPLA累加器取反11
CLRA累加器清零11
四、控制转移类指令类
ACCALLaddr112KB范围内绝对调用22 AJMPaddr112KB范围内绝对转移22 LCALLaddr162KB范围内长调用32
LJMPaddr162KB范围内长转移32
SJMPrel相对短转移22
JMP@A+DPTR相对长转移12
RET子程序返回12
RET1中断返回12
JZrel累加器为零转移22
JNZrel累加器非零转移22
CJNEA,#data,rel累加器与立即数不等转移32 CJNEA,direct,rel累加器与直接寻址单元不等转移32 CJNERn,#data,rel寄存器与立即数不等转移32
CJNE@Ri,#data,relRAM单元与立即数不等转移32 DJNZRn,rel寄存器减1不为零转移22
DJNZdirect,rel直接寻址单元减1不为零转移32 NOP空操作11
五、布尔操作类指令
MOVC,bit直接寻址位送C21
MOVbit,CC送直接寻址位21
CLRCC清零11
CLRbit直接寻址位清零21
CPLCC取反11
CPLbit直接寻址位取反21
SETBCC置位11
SETBbit直接寻址位置位21
ANLC,bitC逻辑与直接寻址位22
ANLC,/bitC逻辑与直接寻址位的反22
ORLC,bitC逻辑或直接寻址位22
ORLC,/bitC逻辑或直接寻址位的反22
JCrelC为1转移22
JNCrelC为零转移22
JBbit,rel直接寻址位为1转移32
JNBbit,rel直接寻址为0转移
1、D1~D8八个彩灯按规定顺序依次点亮(间隔1秒),最后全亮;
2、按规定顺序依次熄灭(间隔1秒),最后全灭;
3、八个灯同时点亮,保持1秒;
4、八个灯同时熄灭,保持0.5秒;再将第3、4步重复4遍,最后整个程序再重复N遍。
5、让八个灯依次显示为010010011.假设1:D1~D8八个彩灯接在P1口,输出低电平发光2.假设2:系统晶振为12MHz3.假设3:N=5
ORG0000H
MOVR3,#5;N=5
LOOP0:
MOVA,#0FFH
MOVP1,#0FFH;开始时全灭
;-------------------------------逐个点亮
MOVR2,#8
LOOP1:CLRC
RLCA
MOVP1,A
CALLDL500MS
DJNZR2,LOOP1
;-------------------------------逐个熄灭
MOVR2,#8
LOOP2:SETBC
RLCA
MOVP1,A
CALLDL500MS
DJNZR2,LOOP2
;-------------------------------全亮、全灭交替
MOVR2,#4
LOOP3:MOVP1,#0;全亮
CALLDL500MS
CALLDL500MS;共1s
MOVP1,#255;全灭
CALLDL500MS;0.5s
DJNZR2,LOOP3
;-------------------------------
DJNZR3,LOOP0
MOVP1,#01001001B;5、显示为01001001
CALLDL500MS
CALLDL500MS;共1s
SJMP0000H;重新开始N遍
;-------------------------------延时子程序DL500MS:
MOVR5,#9;1T
DL1:MOVR6,#128;1T
DL2:MOVR7,#215;1T
NOP;1T
DL3:DJNZR7,DL3;2T2*215=430T
DJNZR6,DL2;2T[1+1+430+2]*128=55552T DJNZR5,DL1;2T[1+55552+2]*9=499995T
RET;2T1+499995+2=499998T
;-------------------------------------END。