基于51单片机的程序设计实例
需积分: 10 184 浏览量
更新于2024-07-24
收藏 112KB DOC 举报
51单片机程序
51单片机程序是学习汇编语言的有力工具,对学习汇编语言有很大帮助。下面我们将对51单片机程序进行详细的解释和分析。
4.1流水灯程序
流水灯程序的目的是利用P1口通过一定延时轮流产生低电平输出,以达到发光二极管轮流亮的效果。实际应用中例如广告灯箱彩灯、霓虹灯闪烁。
程序实例(LAMP.ASM):
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOVA, #00H
MOVP1, A ; 灭所有的灯
MOVA, #11111110B
MAIN1:
MOVP1, A ; 开最左边的灯
ACALL DELAY ; 延时
RLA ; 将开的灯向右边移
AJMP MAIN ; 循环
DELAY:
MOV 30H, #0FFH
D1: MOV 31H, #0FFH
D2: DJNZ 31H, D2
DJNZ 30H, D1
RET
END
在这个程序中,我们首先将P1口的所有灯灭掉,然后将最左边的灯打开,并延时一段时间,然后将开的灯向右边移,最后循环这个过程。
4.2方波输出程序
方波输出程序的目的是P1.0口输出高电平,延时后再输出低电平,循环输出产生方波。实际应用中例如波形发生器。
程序实例(FAN.ASM):
ORG 0000H
MAIN:
; 直接利用P1.0口产生高低电平地形成方波//////////////
ACALL DELAY
SETB P1.0
ACALL DELAY
CLRP1.0
AJMP MAIN
; ///////////////////////////////////////
DELAY:
MOVR1, #0FFH
DJNZ R1, $
RET
END
在这个程序中,我们首先输出高电平,然后延时一段时间,然后输出低电平,最后循环这个过程。
五、定时器功能实例
5.1定时1秒报警程序
定时1秒报警程序的目的是定时器1每隔1秒钟将P1.0的输出状态改变1次,以达到定时报警的目的。实际应用例如定时报警器。
程序实例(DIN1.ASM):
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP DIN0 ; 定时器0入口
MAIN:
TFLAG EQU 34H ; 时间秒标志,判是否到50个
0.2秒,即50*0.2=1秒
MOVTMOD, #00000001B ; 定时器0工作于方式
1
MOVTL0, #0AFH
MOVTH0, #3CH ; 设定时时间为0.05秒,定时
20次则一秒
SETB EA ; 开总中断
SETB ET0 ; 开定时器0中断允许
SETB TR0 ; 开定时0运行
SETB P1.0
LOOP: AJMP LOOP
DIN0:
; 是否到一秒////////////////////////////////////////
INCC: INCTFLAG
MOVA, TFLAG
CJNE A, #20, RE
MOVTFLAG, #00H
CPL P1.0
在这个程序中,我们首先设置定时器0的工作方式,然后设置定时时间为0.05秒,最后每隔1秒钟将P1.0的输出状态改变1次。
51单片机程序提供了多种实用的程序实例,能够帮助学习汇编语言的学生更好地理解和掌握汇编语言的知识和技能。
2013-06-28 上传
2010-11-19 上传
2018-09-17 上传
2022-03-30 上传
229 浏览量
花间派
- 粉丝: 0
- 资源: 3
最新资源
- 响应式汽车销售租赁机构网站静态模板.zip
- 一次性资源
- frontend-blog
- IPC1A_2S_201313940
- amewaregroup-task:具有2种形式的简单React.js Web应用程序
- topcoder:topcoder问题
- 响应式汽车零配件类企业前端cms模板下载.zip
- 常用材料重量计算.zip
- 5种国产arm芯片(对标stm32f103c)数据手册
- TinyURL PHP Script-开源
- UnicaBot2.0
- nest-financial-planning
- gerry0002.hithub.io
- read-font-cmap:解析TrueTypeOpenType字体文件的CMap
- Borland-Delphi-7-Studio-Enterprise
- Hackintool349.zip