📄 汇编小程序.txt
字号:
PR7: MOV P0,#7aH;
ACALL DEL;
AJMP ST;
PR8: MOV P0,#20H;
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 25 页 共 25 页
ACALL DEL;
AJMP ST;
PR9: MOV P0,#60H;
ACALL DEL;
AJMP ST;
END
程序在倚天版运行的状态按键显示数字2
程序在倚天版运行的状态按键显示数字4
;11 该程序的功能是用按键控制灯
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 位操作指令的学习
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 26 页 共 26 页
;运行结果 按P3.2 那么p1.0 的灯亮
; p3.2 接一个按键到地,p1.0 led. 程序把p3.2 的状态送给p1.0
;位地址有多种表达方式,如直接地址p2.2 字节地址21h.5 寄存器acc.7 位定义如rs0 伪指令定义如fi
bit psw.1
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:
MOV C,P3.2; 把p3.2 的状态送入c
MOV P1.0,C;把c 的状态送p1.0
ACALL DEL;调用延时
AJMP MAIN;反复循环
DEL: MOV R7,#0FFH;延时程序
DEL1: MOV R6,#0FFH;
DEL2: DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
程序在倚天版运行的状态按键数码管p10 亮
;12 该程序的功能是比较两个数的大小
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 比较指令的学习与cy 位
; 开始初始化为ff. 大于fe,那么显示1. 如果用导线把p1.1,\...p1.7
;短路到地,p1 将小于fe, 显示0 ,如果把p1.0 短路到地p1=fe 则继续检测无显示.
;该程序示例了比较指令. 同时有助于理解数的概念.
ORG 0000H;程序开始
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 27 页 共 27 页
LJMP MAIN;
ORG 030H;
MAIN: MOV P0,#0FFH;初始化p0
MOV r0,#0FeH;r0 送立即数
clr p2.1;打开第一个数码管
MOV A,r0;r0 送到a
CJNE A,P1,L1;pi 与r0 比较如相等则顺序如果不等则跳到l1.如大cy=1 否则为0
ACALL DEL;调用延时以便观察
AJMP MAIN;重新开始
L1: JC L2;cy 如果为1 则跳到l2 否则顺序
mov p0,#28h;如果为0 显示0
ACALL DEL;
AJMP MAIN;继续检测
L2: mov p0,#7eh;如果为1 显示1
ACALL DEL;
AJMP MAIN;继续检测
DEL: MOV R7,#0FFH; 延时程序
DEL1: MOV R6,#0FFH;
DEL2: DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
程序在倚天版运行的状态 开始初始化为ff. 大于fe,显示1.
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 28 页 共 28 页
程序在倚天版运行的状态 用导线把p10-p17 任意一个接地数码管显示0
;13 该程序的功能是小喇叭1khz 信号
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 定时器的应用学习定时器的应用
;1 如果输出1khz 那么1 个周期是500us 交替出G矯卥蒀Ha祘现.晶体12m, 每周期1us
;t1 为方式0 则m1m0=00h,使用定时器c/t=0 gate=0
;方式0 为13 位定时器,总时间为2 的13 次方微秒.=8192 微秒,减去500 微秒=7692
;1111000001100 换算为16 进制高8 位等于0fh 低8 位 0ch
;注意:这两个字段不是连续的 低8 位01100 前面加0 补足后再算
;初学请多多练习掌握计算方法, 有条件用示波器看频率
ORG 0000H;
LJMP MAIN;
ORG 030H;
MAIN: MOV TMOD,#00H;置定时器为方式0
MOV TH1,#0f0H;载入定时的初值
MOV TL1,#0CH;
MOV IE,#00H;禁止中断
SETB TR1;起动定时器
LOOP: JBC TF1,LOOP1;查询定时器时间到了到loop1
AJMP LOOP;否则继续查询
LOOP1: MOV TH1,#0f0H;重新载入定时的初值
MOV TL1,#0CH;
CLR TF1;清除溢出标志
CPL P3.3;小喇叭响
AJMP LOOP;继续查询
END;
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 29 页 共 29 页
;14 该程序的功能是按p3.5 10 次p1 口led 按照2 进制加1 计数器的应用
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 计数器的应用
;计数值10 次
;t1 为方式2 则m1m0=10h,使用定时器c/t=1 gate=0 TMOD=60H
;方式2 为8 位计数器,一共256, 减去10 等于246 则计数器初值为F6H
;注意定时器T1 的脚就是P3.5 该脚位为一个按键到地
ORG 0000H
LJMP MAIN
ORG 030H
MAIN: MOV TMOD,#60H;设置为方式2
MOV TH1,#0F6H;载入初值F6 即246(共256 计10 次)
MOV TL1,#0F6H
MOV IE,#00H;禁止中断
SETB TR1;起动定时器
MOV P1,#00H;点亮P1 口的灯
ACALL DEL;延时
LOOP: JBC TF1,LOOP1;查询定时器,如到了到LOOP1
AJMP LOOP;否则继续查询
LOOP1: INC A;A 加 1
MOV P1,a;,输出到P1
AJMP LOOP;继续查询
DEL: MOV R7,#014H;延时子程序
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 测试网跟我来学单片机第 30 页 共 30 页
程序在倚天版运行的状态 开机全亮就是00000000
程序在倚天版运行的状态 按键p35 10 次后p10 熄灭,就是00000001
;15 该程序的功能使用定时器实现长时间的延时.p1.0 每分钟取反1 次
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 计数器的应用
;把定时器设置为50ms, 另外设置两个软件计数器20,60 总时间
;为50ms*20*60=60000ms=1 分钟
;t1 为方式1 则m1m0=01h,使用定时器c/t=0 gate=0 TMOD=10H
;方式1 为16 位计数器,一共65535, 减去50000 等于15536 则计数器初值为3cb0h
ORG 0000H;程序开始
LJMP MAIN
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 31 页 共 31 页
ORG 030H
MAIN: MOV 30H,#20;30h,31h 分别置常数20,60
MOV 31H,#60;
MOV TMOD,#10H;定时器方式1
MOV TH1,#03CH;置定时器初值
MOV TL1,#0B0H
MOV IE,#00H;禁止中断
SETB TR1;起动定时器
LOOP: JBC TF1,LOOP1;查询定时器时间到转loop1
AJMP LOOP
LOOP1: MOV TH1,#03CH;重置定时器
MOV TL1,#0B0H
DJNZ 30H,LOOP;定时是否到了20 次
MOV 30H,#20
DJNZ 31H,LOOP;定时是否到了60 次
MOV 31H,#60
CPL P1.0;取反p1.0
AJMP LOOP
END
程序在倚天版运行的状态 程序运行后全灭
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 32 页 共 32 页
程序在倚天版运行的状态 1分钟后p10 点亮, 实现长时间的延时
;16 该程序的功能中断的响应,p3.3 的小喇叭1khz 输出
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 中断的应用;1khz 就是每500us 取反一次
;t1 为方式0 则m1m0=00h,使用定时器c/t=0 gate=0
;方式0 为13 位定时器,总时间为2 的13 次方微秒.=8192 微秒,减去500 微秒=7692
;1111000001100 换算为16 进制高8 位等于0fh 低8 位 0ch
;注意:这两个字段不是连续的 低8 位01100 前面加0 补足后再算
;初学请多多练习掌握计算方法, 有条件用示波器看频率
;中断响应的基本条件是中断有请求,中断允许寄存器相应位置1,总中断开放ea=1
;一旦响应中断, 只保护断点不保护现场,所以一般要保护现场.
ORG 0000H;
LJMP MAIN;
ORG 001BH;跳转到中断入口
LJMP INSER;到中断服务程序
ORG 030H;
MAIN: MOV TMOD,#00H;ti 工作方式0
MOV TH1,#0F0H;载入初值
MOV TL1,#0CH;
SETB EA;开中断
SETB ET1;定时器t1 允许
LOOP: SETB TR1;起动定时器
HERE: SJMP HERE;等待中断, 虚拟主程序,实际这里可以插入其他程序
ORG 0200H;中断服务程序从200h 开始
INSER: MOV TH1,#0F0H;重新装入定时初值
MOV TL1,#0CH;
CPL P3.3;取反小喇叭
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 33 页 共 33 页
RETI;中断返回
END
;17 该程序的功能中断的响应,p3.2 的键盘数码管显示0
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 中断的应用;熟悉中断的地址入口,中断的返回与响应
;主程序是把p1 口送一个数据28h
;所以p1 的状态为00101000 响应中断(按p32,那么到中断服务数码管显示0)
;中断响应的基本条件是中断有请求,中断允许寄存器相应位置1,总中断开放ea=1
;一旦响应中断, 只保护断点不保护现场,所以一般要保护现场.
ORG 0000H
LJMP MAIN
ORG 0003H;外中断0 的入口地址(注意是p32)
LJMP 0100H;跳到100h 地址处
ORG 030H
MAIN: MOV A,#28H;a 送28h
SETB EA;开总中断
SETB EX0;开外部中断
LOOP:MOV P1,A;送a 到LED 显示
LCALL DEl;调用延时
AJMP LOOP;重新开始
DEL: MOV R7,#0FFH;延时程序
DEL1: MOV R6,#0FFH
DEL2: DJNZ R6,DEL2
DJNZ R7,DEL1
RET
ORG 0100H;中断服务程序从100h 开始
MOV P0,#28h;数码管显示0
CLR P2.1;打开第一个数码管
RETI
END
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 34 页 共 34 页
程序在倚天版运行的状态 P1 的状态为00101000
程序在倚天版运行的状态 按p32 后数码管显示0,p1 口不变
;18 该程序的功能中断的响应,两级中断嵌套,中断优先级别设置
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 中断的应用;熟悉中断的地址入口,中断的返回与响应;中断的优先级
;开始主程序数码管显示0,按p32 显示1,延时10 秒返回主程序
;按p33 显示2 延时2 秒返回主程序,
;如果按p32 显示1 后再按p33,那么显示完成后继续显示1,完成后返回主程序显示0
;由于p33 的优先级别高, 首先响应,请仔细体会这个程序
ORG 0000H
LJMP MAIN;跳到主程序
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 35 页 共 35 页
ORG 0003H;中断0 入口
LJMP INSER0;到中断服务0
ORG 0013H;中断1 入口地址
LJMP INSER1;到中断服务0
ORG 030H;主程序从030h 开始
MAIN: MOV SP,#70H;设堆栈指针
MOV IE,#85H;开开放总中断以及中断0,1
SETB PX1;设中断1 为高优先级别
LOOP: MOV P0,#28h;数码管显示0,主程序
mov p2,#0h;打开所有数码管
SJMP LOOP
ORG 0100H;中断0 服务从100h 开始
INSER0: MOV R5,#3FH;置初值
DS0: MOV P0,#7eh;数码管显示1,中断0 程序低优先级别
mov p2,#0h
LCALL DEL
DJNZ R5,DS0;延时10 秒
RETI
ORG 0150H;中断服务1 从150h 开始
INSER1: MOV A,R5
PUSH ACC;把r5 内容保护
MOV R5,#0FH;
DS1: MOV P0,#0a2h;数码管显示2,中断1 程序高优先级别
mov p2,#0h
LCALL DEL;延时2 秒
DJNZ R5,DS1
POP ACC;弹出acc
MOV R5,A
RETI;中断返回
ORG 0200H;延时程序从200h 开始
DEL: MOV R4,#0ffh
DEL1: MOV R3,#0FFH
DEL2: DJNZ R3,DEL2
DJNZ R4,DEL1
RET
END
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 36 页 共 36 页
程序在倚天版运行的状态 开始的时候数码管全部显示0
程序在倚天版运行的状态 按p32 后数码管全部显示1
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 37 页 共 37 页
程序在倚天版运行的状态 按p33 数码管全部显示2
;19 该程序的功能流水灯程序
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 顺序程序的结构, 从头开始逐步运行,熟悉单片机的端口
;顺序结构是最基本的简单的结构
ORG 0000H
LJMP MAIN
ORG 030H
MAIN: CLR P1.7 ;点亮第1 个灯
ACALL DEL;延时
SETB P1.7;关闭低一个灯
CLR P1.6;点亮第2 个灯
ACALL DEL
SETB P1.6
CLR P1.5;点亮第3 个灯
ACALL DEL
SETB P1.5
CLR P1.4;点亮第4 个灯
ACALL DEL
SETB P1.4
CLR P1.3;点亮第5 个灯
ACALL DEL
SETB P1.3
CLR P1.2;点亮第6 个灯
ACALL DEL
SETB P1.2
CLR P1.1
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 38 页 共 38 页
ACALL DEL
SETB P1.1
CLR P1.0
ACALL DEL
SETB P1.0
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
程序在倚天版运行的状态 流水灯的瞬间亮第一个灯
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 39 页 共 39 页
程序在倚天版运行的状态 流水灯的瞬间亮第二个灯
;20 该程序的功能p1 口的led 闪烁10 次后停止子程序的嵌套
;该程序在倚天版开发套件运行通过 tel;0755-27529065 28068492
;51 测试网系列自学单片机例程,www.51c51.com www.8951.com
;知识要点 熟悉子程序的嵌套
;r0 送20,开始为0,然后每次加1,到20 后停止:注意闪烁是取反2 次
;所以取反20 次为闪烁10 次
ORG 0000H
LJMP MAIN
ORG 030H
MAIN: MOV R0,#0;最开始为0
MOV a,#0ffH; a送ff,全部不亮
loop: cpl a ; 取反a(变为00h,全部亮)
mov p1,a;输出到p1
acall del;调用延时以便观察
cjne r0,#20,loop;如果海没有到20 则继续
sjmp $;否则原地等待结束
DEL: MOV R7,#01FH;延时子程序
DEL1: MOV R6,#0fFH
DEL2: MOV R5,#08H
DEL3: DJNZ R5,DEL3
DJNZ R6,DEL2
DJNZ R7,DEL1
inc r0; 每调用一次子程序r0 加1
RET
END
程序在倚天版运行的状态p1 口灯全亮
51 测试网从0 开始学单片机入门教程 www.51c51.com 版权所有
更详细的信息请登陆 www.8951.com www.51c51.com 51 测试网跟我来学单片机第 40 页 共 40 页
程序在倚天版运行的状态闪烁10 次后停止
后记 本教程为51测试网www.51c51.com www.8951.com根据电子制作手把手学单片机教程精心整理编撰,
版主耗费大量时间精力,为尊重作者劳动成果,如转载请保留网站链接并著明出处.
深圳 51 测试网 跟我来学单片机
电话0755-27529065
传真0755-28068492
返回51 测试网 网站主页
返回51 测试网 自学单片机
返回51 测试网 系列单片机例子程序
我要参加讨论
如何购买本站产品__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -