当前位置:文档之家› 单片机蜂鸣器奏乐实验大全代码

单片机蜂鸣器奏乐实验大全代码

单片机蜂鸣器奏乐实验大全代码
单片机蜂鸣器奏乐实验大全代码

单片机蜂鸣器奏乐实验

大全代码

TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

O R G0000H

LJMP START

ORG 000BH

INC 20H ;中断服务,中断计数器加1

MOV TH0,#0D8H

MOV TL0,#0EFH ;12M晶振,形成10毫秒中断

RETI

START:

MOV SP,#50H

MOV TH0,#0D8H

MOV TL0,#0EFH

MOV TMOD,#01H

MOV IE,#82H

MUSIC0:

NOP

MOV DPTR,#DAT ;表头地址送DPTR

MOV 20H,#00H ;中断计数器清0

MUSIC1:

NOP

CLR A

MOVC A,@A+DPTR ;查表取代码

JZ END0 ;是00H,则结束

CJNE A,#0FFH,MUSIC5

LJMP MUSIC3

MUSIC5:NOP

MOV R6,A

INC DPTR

MOV A,#0

MOVC A,@A+DPTR

MOV R7,A

SETB TR0

MUSIC2:NOP

CPL

MOV A,R6

MOV R3,A

LCALL DEL

MOV A,R7

CJNE A,20H,MUSIC2

MOV 20H,#00H

INC DPTR

LJMP MUSIC1

MUSIC3:NOP

CLR TR0

MOV R2,#0DH

MUSIC4:NOP

MOV R2,#0FFH

LCALL DEL

DJNZ R2,MUSIC4

INC DPTR

LJMP MUSIC1

END0:NOP

MOV R2,#0FFH

MUSIC6:MOV R3,#00H

LJMP MUSIC0

DEL:NOP

DEL3:MOV R4,#02H

DEL4:NOP

DJNZ R4,DEL4

NOP

DJNZ R3,DEL3

RET

NOP

DAT:

DB 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H DB 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H DB 30H, 1CH, 10H , 18H DB 20H, 15H, 20H , 1CH DB 20H, 20H, 20H , 26H DB 40H, 20H , 20H , 2BH DB 20H, 26H, 20H , 20H DB 20H, 30H , 80H , 0FFH DB 20H, 20H, 1CH , 10H DB 18H, 10H, 20H , 20H DB 26H, 20H , 2BH , 20H DB 30H, 20H , 2BH , 40H DB 20H, 20H , 1CH , 10H DB 18H, 10H, 20H, 20H DB 26H, 20H , 2BH, 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H DB 26H, 40H, 20H , 20H DB 2BH, 20H, 26H , 20H

DB 20H, 20H, 30H , 80H DB 20H, 30H, 1CH , 10H DB 20H, 10H, 1CH , 10H DB 20H, 20H, 26H , 20H DB 2BH, 20H, 30H , 20H DB 2BH, 40H, 20H , 15H DB 1FH, 05H, 20H , 10H DB 1CH, 10H, 20H , 20H DB 26H, 20H, 2BH , 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H DB 26H, 40H, 20H , 20H DB 2BH, 20H, 26H , 20H DB 20H, 20H, 30H, 30H DB 20H, 30H, 1CH, 10H DB 18H, 40H, 1CH, 20H DB 20H, 20H, 26H, 40H DB 13H, 60H, 18H , 20H DB 15H, 40H, 13H , 40H DB 18H, 80H, 00H

END

单片机汇编指令大全

单片机汇编指令一览表 作者:乡下人 助记符指令说明字节数周期数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2 MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR,#data16 16 位常数加载到数据指针 3 1 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交换 2 1 XCH A, @Ri 间接RAM 和累加器交换 1 1 XCHD A, @Ri 间接RAM 和累加器交换低4 位字节 1 1 (算术运算类指令) INC A 累加器加1 1 1 INC Rn 寄存器加1 1 1 INC direct 直接地址加1 2 1 INC @Ri 间接RAM 加1 1 1 INC DPTR 数据指针加1 1 2 DEC A 累加器减1 1 1 DEC Rn 寄存器减1 1 1 DEC direct 直接地址减1 2 2

单片机蜂鸣器奏乐实验大全代码

单片机蜂鸣器奏乐实验大 全代码 This manuscript was revised by the office on December 10, 2020.

O R G0000H LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5:NOP MOV R6,A INC DPTR MOV A,#0 MOVC A,@A+DPTR MOV R7,A SETB TR0 MUSIC2:NOP CPL MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 MOV 20H,#00H INC DPTR LJMP MUSIC1 MUSIC3:NOP CLR TR0

MOV R2,#0DH MUSIC4:NOP MOV R2,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1 END0:NOP MOV R2,#0FFH MUSIC6:MOV R3,#00H LJMP MUSIC0 DEL:NOP DEL3:MOV R4,#02H DEL4:NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: DB 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H DB 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H DB 30H, 1CH, 10H , 18H DB 20H, 15H, 20H , 1CH DB 20H, 20H, 20H , 26H DB 40H, 20H , 20H , 2BH DB 20H, 26H, 20H , 20H DB 20H, 30H , 80H , 0FFH DB 20H, 20H, 1CH , 10H DB 18H, 10H, 20H , 20H DB 26H, 20H , 2BH , 20H DB 30H, 20H , 2BH , 40H DB 20H, 20H , 1CH , 10H DB 18H, 10H, 20H, 20H DB 26H, 20H , 2BH, 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H

51单片机50个实例代码

51单片机50个例程代码程序里有中断,串口等驱动,直接复制即可使用1-IO输出-点亮1个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.doczj.com/doc/f81959892.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit LED=P1^0;// 用sbit 关键字定义LED到P1.0端口, //LED是自己任意定义且容易记忆的符号 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 LED=1; //将P1.0口赋值1,对外输出高电平 LED=0; //将P1.0口赋值0,对外输出低电平 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 2-IO输出-点亮1个LED灯方法2 /*-----------------------------------------------

名称:IO口高低电平控制 论坛:https://www.doczj.com/doc/f81959892.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用1个字节对单个端口赋值 P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉, //ff换算成二进制是1111 1111 P1 = 0xfe; //P1口的最低位点亮,可以更改数值是其他的灯点亮 //0xfe是16进制,0x开头表示16进制数, //fe换算成二进制是1111 1110 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 3-IO输出-点亮多个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.doczj.com/doc/f81959892.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的多个LED灯

单片机指令表(最全)

单片机指令以A开头的指令有18条,分别为: 1、ACALL addr11 指令名称:绝对调用指令 指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。操作内容: PC←(PC)+2SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addrl0~0 字节数: 2 机器周期:2 使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。 2、ADD A,Rn 指令名称:寄存器加法指令指令代码:28H~2FH 指令功能:累加器内容与寄存器内容相加 操作内容:A←(A)+(Rn),n=0~7 字节数: 1 机器周期;1 影响标志位:C,AC,OV 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,OV 6、ADDC A,Rn 指令名称:寄存器带进位加法指令指令代码:38H~3FH 指令功能:累加器内容、寄存器内容和进位位相加 操作内容:A←(A)+(Rn)+(C),n=0~7 影响标志位:C,AC,OV 7、ADDC A,direct 指令名称:直接寻址带进位加法指令指令代码:35H 指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加 操作内容:A←(A)+(direct)+(C) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 8、ADDC A,@Ri 指令名称:间接寻址带进位加法指令指令代码:36H~37H 指令功能:累加器内容, 内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1 字节数: 1 机器周期:1 影响标志位:C,AC,OV 9、ADDC A,#data 指令名称:立即数带进位加法指令指令代码:34H 指令功能:累加器内容、立即数及进位位相加 操作内容:A←(A)+data+(C) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 10、AJMP addr11 指令名称:绝对转移指令 指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不变。操作内容:PC←(PC)+2PCl0~0←addrll 字节数: 2 机器周期:2 使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB。 11、ANL A,Rn 指令名称:寄存器逻辑与指令指令代码:58H~5FH 指令功能:累加器内容逻辑与寄存器内容 操作内容:A←(A)∧(Rn),n=0~7 字节数: 1 机器周期:1 12、ANL A,direct 指令名称:直接寻址逻辑与指令指令代码:55H 指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容 操作内容:A←(A)

C单片机指令集大全

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

51单片机指令表

此表主要是为了方便大家查阅每条指令的作用,写法以及字节数和周期数,建议大家保存为书签。 助记符指令说明字节数周期数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2 MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR,#data16 16 位常数加载到数据指针 3 1 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1

单片机指令大全

一、数据传输指令 ─────────────────────────── ──────────── 在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVX 调用片外数据 MOVC调用片内数据. PUSH 把字压入堆栈. POP 把字弹出堆栈. SWAP 交换8位寄存器里字节的顺序 XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) XLAT 字节查表转换. 2. 输入输出端口传送指令. IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器) 输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时, 其范围是0-65535. 二、算术运算指令 ─────────────────────────── ──────────── ADD 加法. ADC 带进位加法. INC 加1. DAA 加法的十进制调整. SUB 减法. SBB 带借位减法. DEC 减1. NEC 求反(以0 减之). CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). AAS 减法的ASCII码调整. DAS 减法的十进制调整. MUL 无符号乘法. IMUL 整数乘法. 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), DIV 无符号除法. IDIV 整数除法. 三、逻辑运算指令 ─────────────────────────── ──────────── AND 与运算. or 或运算. XOR 异或运算. NOT 取反. ROL 循环左移. ROR 循环右移. RCL 通过进位的循环左移. RCR 通过进位的循环右移. 以上四种移位指令,其移位次数可达255次. 五、程序转移指令 ─────────────────────────────────────── 1>无条件转移指令(长转移) JMP 无条件转移指令 CALL 过程调用 RET/RETF过程返回. 2>条件转移指令(短转移,-128到+127的距离内) ( 当且仅当(SF XOR OF)=1时,OP1循环控制指令(短转移) LOOP CX不为零时循环. 4>中断指令 INT 中断指令 INTO 溢出中断 IRET 中断返回 5>处理器控制指令 NOP 空操作. 六、伪指令 END 程序结束.

MCS51单片机指令大全

MCS-51系列单片机指令大全 以字母的顺序排列(A--Z) A: -------------------------------------------------------------------- 1、ACALL addr11 指令名称:绝对调用指令 指令代码: A10 A9 A9 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。 操作内容: PC←(PC)+2 SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addr l0~0 字节数: 2 机器周期:2 使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。 2、ADD A,Rn

指令代码:28H~2FH 指令功能:累加器内容与寄存器内容相加 操作内容:A←(A)+(R n), n=0~7 字节数: 1 机器周期;1 影响标志位:C,AC,OV 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

单片机指令表(最全)

. ;.. 单片机指令以A 开头的指令有18条,分别为: 1、ACALL addr11 指令名称:绝对调用指令 指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的11位地址(al0~a0),取代PC 的低11位,PC 的高5位不变。 操作内容: PC←(PC)+2 SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addrl0~0 字节数: 2 机器周期:2 使用说明:由于指令只给出子程序入口地址的低11位,因此调用 范围是2KB 。 2、ADD A ,Rn 指令名称:寄存器加法指令 指令代码:28H ~2FH 指令功能:累加器内容与寄存器内容相加 操作内容:A←(A)+(Rn), n =0~7 字节数: 1 机器周期;1 影响标志位:C ,AC ,OV 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 ,OV 6、ADDC A ,Rn 指令名称:寄存器带进位加法指令 指令代码:38H ~3FH 指令功能:累加器内容、寄存器内容和进位位相加 操作内容:A←(A)+(Rn)+(C), n =0~7 字节数: 1 机器周期:1 影响标志位:C ,AC ,OV 7、ADDC A ,direct 指令名称:直接寻址带进位加法指令 指令代码:35H 指令功能:累加器内容、内部RAM 低128单元或专用寄存器内 容与进位位加 操作内容:A←(A)+(direct)+(C) 字节数: 2 机器周期:1 影响标志位:C ,AC ,OV 8、ADDC A ,@Ri 指令名称:间接寻址带进位加法指令 指令代码:36H ~37H 指令功能:累加器内容, 内部RAM 低128单元内容及进位位相加 操作内容:A←(A)+((Ri))+(C), i =0,1 字节数: 1 机器周期:1 影响标志位:C ,AC ,OV 9、ADDC A ,#data 指令名称:立即数带进位加法指令 指令代码:34H 指令功能:累加器内容、立即数及进位位相加 操作内容:A←(A)+data+(C) 字节数: 2 机器周期:1 影响标志位:C ,AC ,OV 10、AJMP addr11 指令名称:绝对转移指令 指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。其方法是以指令提供的11位地址,取代PC 的低11位,.而PC 的高5位保持不变。 操作内容:PC←(PC)+2 PCl0~0←addrll 字节数: 2 机器周期:2 使用说明:由于addrll 的最小值是000H ,最大值是7FFH ,因此地址转移范围是2KB 。 11、ANL A ,Rn 指令名称:寄存器逻辑与指令 指令代码:58H ~5FH 指令功能:累加器内容逻辑与寄存器内容 操作内容:A←(A)∧(Rn), n =0~7 字节数: 1 机器周期:1 12、ANL A ,direct 指令名称:直接寻址逻辑与指令 指令代码:55H 指令功能:累加器内容逻辑与内部RAM 低128单元或专用寄存 器内容 操作内容:A←(A)∧(diret) 字节数: 2 机器周期:1

单片机指令功能一览表

单片机指令功能一览表 助记符代码说明 MOV A,Rn E8~EF 寄存器A MOV A,direct E5 dircet 直接字节送A MOV A,@Ri ER~E7 间接RAM送A MOV A,#data 74 data 立即数送A MOV Rn,A F8~FF A送寄存器 MOV Rn,dircet A8~AF dircet 直接字节送寄存器 MOV Rn,#data 78~7F data 立即数送寄存器 MOV dircet,A F5 dircet A送直接字节 MOV dircet,Rn 88~8F dircet 寄存器送直接字节 MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节 MOV dircet,@Ro 86~87 间接RAM送直接字节 MOV dircet,#data 75 dircet data 立即数送直接字节 MOV @Ri,A F6~F7 A送间接RAM MOV @Ri,#data 76~77 data 直接字节送间接RAM MOV @Ri,#data 76~77 data 立即数送间接RAM MOV DPTR,#data16 90 data 15~8 16位常数送数据指针 data7~0 MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮 器字节选A MOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A MOVX A,@Ri E2~E3 送外部数据(8位地址)送A MOVX A,@DPTR E0 送外部数据(16位地址)送A MOVX @Ri,A F2~F3 A送外部数据(8位地址) MOVX @DPTR,A F0 A送外部数据(16位地址) PUSH dircet C0 dircet 直接字节进栈,SP加1 POP dircet D0 dircet 直接字节退栈,SP减1 XCH A,Rn C8~CF 交换A和寄存器 XCH A,dircet C5 dircet 交换A和直接字节 XCH A,@Ri C6~C7 交换A和间接RAM XCH A,@Ri D6~D7 交换A和间接RAM的低位 SWAP A C4 算术操作(A的二个半字节交换) ADD A,Rn 28~2F 寄存器加到A ADD A,dircet 25 dircet 直接字节加到A ADD A,@Ri 26~27 间接RAM加到A ADD A,#data 24data 立即数加到A ADD A,Rn 38~3F 寄存器和进位位加到A ADD A,dircet 35dircet 直接字节和进位位加到A ADD A,@Ri 36~37 间接字节和进位位加到A ADD A,data 34 data 立即数和进位位加到A

单片机常用代码大全

1、位码(共阴):0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f 2、断码(共阳):0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 3、独立管码(共阳):0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08,0x10,0xc0,0x62,0x84,0x60,0x70 4、循环函数intrins _crol_字符循环左移 _cror_字符循环右移 _irol_整数循环左移 _iror_整数循环右移 _lror_长整数循环左移 _lror_长整数循环右移 _nop_空操作8051 NOP 指令 _testbit_测试并清零位8051 JBC 指令 5、中段代码 interrupt 0 外部中断0 interrupt 1 定时器0中断 interrupt 2 外部中断1 interrupt 3 定时器1中断 interrupt 4 串口中断 interrupt 5 定时器2中断(52里面,51没有) 6、IIC总线 开始信号: void IICstart() { scl=1; delay(); sda=1; delay(); sda=0; delay(); scl=0; } 结束信号 void IICstop() { scl=1; delay(); sda=0; delay(); sda=1;

} 应答信号 void IICyingda() { uchar j; scl=1; delay(); while((sda==1)&&j<250)j++; //sda=0; //delay(); scl=0; delay(); } 写信号(写入一8位数据) void write_byte(uchar w) { uchar i,temp; temp=w; for(i=0;i<8;i++) { scl=0; delay(); temp=temp<<1; sda=CY; delay(); scl=1; delay(); } scl=0; delay(); sda=0; delay(); } 读信号(读出一个8位数据)uchar read_byte(void) { uchar i,j,k; sda=1;

单片机指令表(最全)

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位地址。包含0—127(255)内部存储单元地址和特殊功能寄存地址。 #data—指令中的8位常数。 #data16—指令中的16位常数。 addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。 #addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。 rel—8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128——+127范围内。 @—间接寄存器寻址或基址寄存器的前缀。 /—为操作的前缀,声明对该位操作书取反。 DPTR—数据指针。 bit—内部RAM和特殊功能寄存器的直接寻址位。 A—累加器。 B—累加器B。用于乘法和除法指令中。 C—进位标志位。 (x)—某地址单元中的内容。 ((x))—由X寻址单元中的内容。 (一)MCS-51的寻址方式 寻址的“地址”即为操作数所在单元的地址,绝大部分指令执行时都需要用到操作数,那么到哪里去取得操作数呢?最易想到的就是告诉CPU操作数所在的地址单元,从那里可取得响应的操作数,这便是“寻址”之意。MCS-51的寻址方式很多,使用起来也相当方便,功能也很强大,灵活性强。这便是MCS-51指令系统“好用”的原因之一。下面我们分别讨论几种寻址方式的原理。 [1].直接寻址 指令中操作数直接以单元地址形式出现,例如: MOV A,68H 这条指令的意义是把内部RAM中的68H单元中的数据内容传送到累加器A中。值得注意的是直接寻址方式只能使用8位二进制地址,因此这种寻址方式仅限于内部RAM进 行寻址。低128位单元在指令中直接以单元地址的形式给出。 对于特殊功能寄存器可以使用其直接地址进行访问,还可以以它们的符号形式给出,只是特殊功能寄存器只能用直接寻址方式访问,而无其它方法。 单片机指令以A开头的指令有18条,分别为: 1、ACALL addr11 指令名称:绝对调用指令 指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的11位地址(al0~a0), 取代PC的低11位,PC的高5位不变。 操作内容: PC←(PC)+2 SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addrl0~0 字节数:2 机器周期:2 使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。 2、ADD A,Rn 指令名称:寄存器加法指令 指令代码:28H~2FH 指令功能:累加器内容与寄存器内容相加 操作内容:A←(A)+(Rn),n=0~7 字节数:1 机器周期;1 影响标志位:C,AC,OV 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

51单片机汇编指令大全

51汇编指令大全 Rn: 表示当前寄存器区的8个工作寄存器R0~R7 Ri: 表示当前寄存器区的R0或R1,可作地址指针即间址寄存器(i=0或1) @: 为间接寄存器或基址寄存器的前缀. Direct: 表示8位内部数据存储单元的地址.它可以是内部RAM的单元地址0~127.特殊功能 寄存器SFR的地址(128~255)或名称, A: 累加器ACC. B: .特殊功能寄存器B,用于MUL和DIV指令中. C: 进位位Cy. #data: 表示包含在指令中的单字节(8位)立即数.如果用16位进制表示,后缀字母为”H”,数据范围00~0FFH,不得一字母开头;如果用16进制表示无须任何后缀,但必须在0~255之间. #data16: 表示包含在指令中的双字节(16位)立即数. Adda16: 表示16位的目的地址.用于LCALL和LJMP指令中,目的地址范围是从0000H~FFFFH的整个64KB存储地址空间. Adda11: 表示11位的目的地址.用于ACALL和AJMP的指令中,目的地址必须和下一条指令第一个字节同处一页. Rel: 表示8位带符号的相对偏移量.用语SJMP和所有的条件转移指令中.偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值. DPTR: 为数据指针,可用作16位的地址寄存器. /: 加在位操作的前面,表示对该位进行非运算. bit: 表示内部可寻址位或特殊功能寄存器中的直接寻址位. “(x): 寄存器或地址单元中的内容. ((x)): 有x见解寻址的单元中的内容. <-: 表示将箭头右边的内容传送至箭头的左边. $: 当前指令的地址. 单片机指令系统 (一) 内部数据传送指令 (1) 以累加器A为目的的传送指令: MOV A, #data ;(A)<-data MOV A, direct ;(A)<-(direct) MOV A, Rn ;(A)<-(Rn) MOV A, @Ri ;(A)<- ((Ri)) (2) 以通用寄存器Rn为目的的传送指令: MOV Rn, A ;(Rn)<-(A) MOV Rn, direct ; (Rn)<(direct)- MOV Rn, #data: ; (Rn)<-(data) (3) 以直接地址为目的的传送指令: MOV direct, A ;(direct)<-(A) MOV direct, Rn ; (direct)<-(Rn) MOV direct, direct2 ; (direct)<-(direct2) MOV direct, @Ri ; (direct)<-((Rn)) MOV direct, #data ; (direct)<-data (4) 以寄存器间接地址为目的的传送指令:

(完整版)单片机指令大全

一个单片机所需执行指令的集合即为单片机的指令系统。单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要翻译”成为机器码,单片机才能 执行之。现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。但不管是使用机 器语言、汇编语言还是高级语言都是使用指令编写程序的。 所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器翻译”成为二进制机器码方能执行,但如果直接 使用二进制来编写程序,那将十分不便,也很难记忆和识另h不易编写、难于辨读,极易 出错,同时出错了也相当难查找。所以现在基本上都不会直接使用机器语言来编写单片机的程序。最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号 为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号 通常都使用易于理解的英文单词和拼音字母来表示。 每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。 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位地址。包含0 —127(255)内部存储单元地址和特殊功能寄存地址。 #data —指令中的8位常数。 #data16 —指令中的16位常数。 addr16 —用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程

C单片机指令集大全

格式功能简述字节数周期 一、数据传送类指令 M O V A,R n寄存器送累加器1 1 M O V R n,A累加器送寄存器1 1 M O V A,@R i内部R A M单元送累加器1 1 M O V@R i,A累加器送内部R A M单元1 1 M O V A,#d a t a立即数送累加器2 1 M O V A,d i r e c t直接寻址单元送累加器2 1 M O V d i r e c t,A累加器送直接寻址单元2 1 M O V R n,#d a t a立即数送寄存器2 1 M O V d i r e c t,#d a t a立即数送直接寻址单元32 M O V@R i,#d a t a立即数送内部R A M单元21 M O V d i r e c t,R n寄存器送直接寻址单元2 2 M O V R n,d i r e c t直接寻址单元送寄存器2 2 M O V d i r e c t,@R i内部R A M单元送直接寻址单元22 M O V@R i,d i r e c t直接寻址单元送内部R A M单元22 M O V d i r e c t2,d i r e c t1直接寻址单元送直接寻址单元32

M O V D P T R,#d a t a1616位立即数送数据指针32 M O V X A,@R i外部R A M单元送累加器(8位地址)12 M O V X@R i,A累加器送外部R A M单元(8位地址)12 M O V X A,@D P T R外部R A M单元送累加器(16位地址)12 M O V X@D P T R,A累加器送外部R A M单元(16位地址)12 M O V C A,@A+D P T R查表数据送累加器(D P T R为基址)12 M O V C A,@A+P C查表数据送累加器(P C为基址)12 X C H A,R n累加器与寄存器交换1 1 X C H A,@R i累加器与内部R A M单元交换1 1 X C H D A,d i r e c t累加器与直接寻址单元交换21 X C H D A,@R i累加器与内部R A M单元低4位交换11 S W A P A累加器高4位与低4位交换1 1 P O P d i r e c t栈顶弹出指令直接寻址单元2 2 P U S H d i r e c t直接寻址单元压入栈顶2 2 二、算术运算类指令 A D D A,R n累加器加寄存器1 1 A D D A,@R i累加器加内部R A M单元1 1

相关主题
文本预览
相关文档 最新文档