📄 汇编小程序.txt
字号:
1 篇 倚天版编程试验套件的硬件说明
第2 篇 关于dais 开发环境的操作方法, 初学者可用他来编译文件, 软件仿真
第3 篇 倚天版实验部分原理图硬件链接
第4 篇 入门程序
1 把所有端口的同时置高置低,不断闪烁
2 p1 口3 路流水灯理解2 进制数与端口的关系
3 单片机的加法:把52h+0fch 结果送p1 口
4 单片机的乘法:把ff*03h 结果送p1
5 单片机的二进制加法
6 单片机的两位计数器
7 学习单片机的逻辑运算
8 进一步学习单片机的逻辑运算
9 循环移位指令的流水灯
10 理解熟悉散转结构的程序
11 位操作指令的学习
12 比较指令的学习与cy位
13 该程序的功能是小喇叭1khz 信号
14 按p3.5 10 次p1 口led按照2 进制加1
15 使用定时器实现长时间的延时.
16 中断的响应,p3.3 的小喇叭1khz 输出
17 p3.2 的键盘数码管显示0
18 中断的响应,两级中断嵌套
19 顺序程序的结构
20 p1 口的led闪烁10 次后停止子程序的1 该程序的功能是把所有端口的同时置高置低,不断闪烁.
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程.www.51c51.com www.8951.com
; 知识要点 理解单片机的运行过程, 理解延时程序,
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:MOV P0,#00H;把p0,p1,p2,p3 全部置低电平
MOV P1,#00H;
MOV P2,#00H;
MOV P3,#00H;
ACALL DEL; 延时
MOV P0,#0FFH; 把p0,p1,p2,p3 全部置高电平
MOV P1,#0FFH;
MOV P2,#0FFH;
MOV P3,#0FFH;
ACALL DEL; 延时
AJMP MAIN; 重新开始
ORG 0200H; 从200h 开始存放
DEL:MOV R5,#04H; 延时子程序
F3:MOV R6,#0FFH;
F2:MOV R7,#0FFH;
F1: DJNZ R7,F1;
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 11 页 共 11 页
DJNZ R6,F2;
DJNZ R5,F3;
RET; 子程序结束
END
程序在倚天版运行的状态1,全部不亮
程序在C霶tC吞珻_____倚天版运行的状态2,全部亮
;2 该程序的功能是p1 口3 路流水灯
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
; 知识要点 理解2 进制数与端口的关系
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 12 页 共 12 页
MAIN:MOV P1,#0DBH;11011011--零为亮
ACALL DEL;延时
MOV P1,#06DH;01101101
ACALL DEL;延时
MOV P1,#0B6H;10110110
ACALL DEL;延时
AJMP MAIN;
DEL: MOV R7,#0FFH;延时子程序
DEL1:MOV R6,#0FFH;
DEL2: DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
程序在倚天版运行的状态1,跑马灯的瞬间11011011 靠近数码管的一边为高位,1 为灭0 为灭
程序在倚天版运行的状态2,跑马灯的瞬间10110110 靠近数码管的一边为高位,1 为灭0 为灭
;3 该程序的功能是单片机的加法:把52h+0fch 结果送p1 口
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 理解2 进制数的加法
;运行结果为p1.7 到p1.0 为亮灭亮亮灭灭灭亮就是二进制01001110
;注意是从高向低排列,同时该数已经超过256, 所以进位cy=1
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:ACALL DEL;
MOV A,#052H;寄存器a 送52h
MOV R0,#0FCH;寄存器r0 送0fch
ADD A,R0;相加
NOP;空操作
MOV P1,A;结果送p1 口
DEL:MOV R7,#0FFH;;延时子程序
DEL1:MOV R6,#0FFH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;延时子程序返回
END
程序在倚天版运行的状态,运行结果为p1.7 到p1.0 为亮灭亮亮灭灭灭亮就是二进制01001110
靠近数码管的一边为高位,1 为灭0 为灭
;4 该程序的功能是单片机的乘法:把ff*03h 结果送p1 口先送高8 位再送低8 位
;知识要点 理解2 进制数的乘法
;运行结果先输出00000010 ,然后输出11111101,就是1011111101 换算后等于10 进制765,就是两数相乘
的结果
;注意是从高向低排列,同时该数已经超过256, 所以进位cy=1
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:ACALL DEL;
MOV A,#0FFH;寄存器a 送0ff
MOV B,#03H;寄存器b 送03h
MUL AB; 相乘
MOV P1,b ;高8 位输出结果是00000010
acall del
MOV P1,a;低8 位输出结果是11111101
DEL:MOV R7,#0FFH;延时子程序
DEL1:MOV R6,#0FFH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
程序在倚天版运行的状态00000010
;5 该程序的功能是单片机的二进制加法
;知识要点 理解2 进制数的加法
;运行结果先输出00000000 (全亮),然后输出00000001,然后0000010,直到11111111
;从P1 口的8 个灯看二进制的0,1,2,3......
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:MOV A,#00H;先送0
PLAY:MOV P1,A;输出
ACALL DEL;延时
INC A;加1
AJMP PLAY;再输出
DEL:MOV R7,#0FFH;延时子程序
DEL1:MOV R6,#0FFH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 16 页 共 16 页
程序在倚天版运行的状态00000000
程序在倚天版运行的状态00000010
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 17 页 共 17 页
程序在倚天版运行的状态00000100
;6 该程序的功能是单片机的两位计数器
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 理解数的概念
;运行结果 数码管从00 一直加到99
;ANL 0FH 就是把数据与00001111 相与那么遇1 得原来的数遇0 则为0,结果是前面的4 位变0, 后面的4
位保留
;P2.1 , P2.2 分别是数码管控制位.CLR 则点亮
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:MOV 20H,#00H;20H 单元送00
MOV A,20H;
GOON:CLR C;进位CY 置0 这里的作用是当数字超过9 要求进位时屏蔽进位, 意思永不进位
ANL A,#0FH;屏蔽A 中的高4 位
MOV DPTR,#TAB;查表
MOVC A,@A+DPTR;
PP:CLR P2.2;打开个位数码管
MOV P0,A;输出到P0
ACALL DEL;延时以便观察结果
SETB P2.2;关断显示
MOV A,20H;20H 再送A
SWAP A;交换A 的高低4 位
ANL A,#0FH;屏蔽A 中的高4 位
MOVC A,@A+DPTR;查表
CLR P2.1;打开十位数码管
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 18 页 共 18 页
MOV P0,A;输出到P0
ACALL DEL ;延时
SETB P2.1 ;关断显示
MOV A,20H;20H 送A
INC A; 加1
DA A;2-10 进制调整
MOV 20H,A;调整后送20H
AJMP GOON;重新开始
DEL:MOV R7,#0FFH;延时子程序
DEL1:MOV R6,#01FH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
ORG 0100H;从100H 开始存放数据表0,1,2,3,4,5,6,7,8,9
TAB: db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;0 1 2 3 4 5 6 7 8 9
END
程序在倚天版运行的状态瞬间第一个数码管显示2
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 19 页 共 19 页
程序在倚天版运行的状态瞬间第数码管显示34
;7 该程序的功能是学习单片机的逻辑运算
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 理解熟悉单片机的逻辑运算
;运行结果 P1 口输出4 次计算的数值,注意1 为灭0 为亮,从1.7 到1.0 排列
;与的概念:有0 为0 全1 出1.或的概念:有1 为1 全0 出0.取反的概念遇1 为0 遇0 为1
;异或的概念:相同为0 不同为1
ORG 0000H;
LJMP MAIN;程序开始
ORG 030H;
MAIN:MOV A,#03CH;A 送 03C ,就是00111100
MOV R0,#0AAH;R0 送 0AA 就是10101010
CPL A;A 的内容取反
MOV P1,A;输出到P1 结果为11000011
ACALL DEL;调用延时便于观察
MOV P1,#0FFH ;关断显示
MOV A,#0C3H;A 的值重新载入
ANL A,R0;A 与R0 相与
MOV P1,A; 输出到P1 结果为10000010
ACALL DEL;调用延时便于观察
MOV P1,#0FFH
MOV A,#0C3H; A 的值重新载入
ORL A,R0;A 与R0 相或结果为11101011
MOV P1,A;输出到P1
ACALL DEL;调用延时便于观察
MOV P1,#0FFH;关断显示
MOV A,#0C3H;A 的值重新载入
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 20 页 共 20 页
XRL A,R0;;A 与R0 相异或结果为01101001
MOV P1,A;;输出到P1
ACALL DEL;
MOV P1,#0FFH;;关断显示
AJMP MAIN;重新开始
DEL: MOV R7,#0FFH;延时子程序
DEL1:MOV R6,#0FFH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
程序在倚天版运行的状态01101001
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 21 页 共 21 页
程序在倚天版运行的状态10000010
;8 该程序的功能是进一步学习单片机的逻辑运算
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 理解熟悉单片机的逻辑运算
;运行结果 P1 口输出结果为01100000,注意1 为灭0 为亮,从1.7 到1.0 排列
;ANL 0FH 就是把数据与00001111 相与那么遇1 得原来的数遇0 则为0,结果是前面的4 位变0, 后面的4
位保留
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:MOV A,#59H;A 中送59H 这个数 01011001
ANL A,#0FH;59H 和00001111 相与就是保留后4 位结果为1001
SWAP A;A 中的高低字节交换结果为10010000
ANL P1,#0FH;P1口的内容与A相与就是清除高4位注意P1本来为11111111 即FF此时变为00001111
ORL P1,A;P1 的内容与相或 10010000 和00001111 相或结果为01100000
ACALL DEL;调用延时以便观察
AJMP MAIN;重新开始
DEL: MOV R7,#0FFH;延时子程序
DEL1:MOV R6,#0FFH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
运行结果 P1 口输出结果为01100000,注意1 为灭0 为亮,从1.7 到1.0 排列
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 22 页 共 22 页
;9 该程序的功能是用循环移位指令的流水灯
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 理解熟悉移位指令
;运行结果 P1 口8 个灯循环点亮
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:MOV R0,#08H;把8 送入R0 中,
MOV A,#0FEH;把FE 送入A 中,即11111110
PLAY:RR A;右移动1 位
MOV P1,A;输出显示
ACALL DEL;延时
DJNZ R0,PLAY;一共移动8 次
AJMP MAIN;重新开始
DEL: MOV R7,#0FH;延时子程序
DEL1:MOV R6,#0FFH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
运行结果流水灯的瞬间 注意由于照相机的延时,看到的两个灯亮实际为一个灯亮
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 23 页 共 23 页
运行结果流水灯的瞬间 注意由于照相机的延时,看到的两个灯亮实际为一个灯亮
;10 该程序的功能是用按键计数器
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 理解熟悉散转结构的程序
;运行结果 按P3.2 或3.3(低4 位的任意一个键盘)第一位数码管加1 直到9 循环
; 开始显示0 把P3 送OFH,判断有没有按键,没有则反复循环,有按R0 加1,如到10
;那么则清除, 最后根据R0 的值散转.
ORG 0000H;
LJMP MAIN;程序开始
ORG 030H;
MAIN: MOV P0,#028H;数码管显示0
clr p2.1 ;打开第一个数码管
MOV R0,#00H;r0 送0fh
ST: MOV P3,#0FH;p3 送0fh
MOV A,P3;
CJNE A,#0FH,F1;如果p3 口的值等于0f,那么按键没有按,
ACALL DEL;
AJMP ST;继续检测
F1: ACALL DEL;
CJNE A,#0FH,F2;再次判断有没有按
AJMP ST;继续检测
F2: INC R0;r0 加1
CJNE R0,#0AH,F3;如果r0 等于10 转道f3;OAH 就是10, 到这里转移重新
MOV R0,#00H;
F3: MOV DPTR,#JPTAB;取地址
MOV A,R0;
CLR C;清除进位
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 24 页 共 24 页
RLC A;a 的内容右移
JNC NADD;判断有没有进位, 有向下无到NDDA
INC DPH;有进位DPH 加1
NADD: JMP @A+DPTR;根据A 的内跳转到PR1,PR2....
JPTAB: NOP;
NOP;
AJMP PR1;
AJMP PR2;
AJMP PR3;
AJMP PR4;
AJMP PR5;
AJMP PR6;
AJMP PR7;
AJMP PR8;
AJMP PR9;
DEL: MOV R7,#04H;延时子程序
DEL1: MOV R6,#0FFH;
DEL2: MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
PR1: MOV P0,#7eH;显示1
ACALL DEL;
AJMP ST;
PR2: MOV P0,#0a2H;显示2
ACALL DEL;
AJMP ST;
PR3: MOV P0,#62H;显示3
ACALL DEL;
AJMP ST;
PR4: MOV P0,#74H;显示4
ACALL DEL;
AJMP ST;
PR5: MOV P0,#61H;显示5
ACALL DEL;
AJMP ST;
PR6: MOV P0,#21H;
ACALL DEL;
AJMP ST;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -