单片机汇编语言经典一百例

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机实用程序库

4.1 流水灯

程序介绍:利用P1 口通过一定延时轮流产生低电平

输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。

程序实例(LAMP.ASM)

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

9

MOV A,#00H

MOV P1,A ;灭所有的灯

MOV A,#11111110B

MAIN1:

MOV P1,A ;开最左边的灯

ACALL DELAY ;延时

RL A ;将开的灯向右边移

AJMP MAIN ;循环

DELAY:

MOV 30H,#0FFH

D1: MOV 31H,#0FFH

D2: DJNZ 31H,D2

DJNZ 30H,D1

RET

END

4.2 方波输出

程序介绍:P1.0 口输出高电平,延时后再输出低电

平,循环输出产生方波。实际应用中例如:波形发生器。

程序实例(FAN.ASM):

ORG 0000H

MAIN:

;直接利用P1.0口产生高低电平地形成方波////////////// ACALL DELAY

SETB P1.0

ACALL DELAY

10

CLR P1.0

AJMP MAIN

;////////////////////////////////////////////////// DELAY:

MOV R1,#0FFH

DJNZ R1,$

RET

END

五、定时器功能实例

5.1 定时1秒报警

程序介绍:定时器1每隔1秒钟将p1.o的输出状态改变1 次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN1.ASM):

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP DIN0 ;定时器0入口

MAIN:

TFLA G EQU 34H ;时间秒标志,判是否到50个

0.2秒,即50*0.2=1秒

MOV TMOD,#00000001B;定时器0工作于方式

1

MOV TL0,#0AFH

MOV TH0,#3CH ;设定时时间为0.05秒,定时

20次则一秒

11

SETB EA ;开总中断

SETB ET0 ;开定时器0中断允许

SETB TR0 ;开定时0运行

SETB P1.0

LOOP: AJMP LOOP

DIN0:

;是否到一秒//////////////////////////////////////// INCC: INC TFLAG

MOV A,TFLAG

CJNE A,#20,RE

MOV TFLAG,#00H

CPL P1.0

;////////////////////////////////////////////////// RE:

MOV TL0,#0AFH

MOV TH0,#3CH ;设定时时间为0.05秒,定时

20次则一秒

RETI

END

5.2 频率输出公式

介绍:f=1/t

s51 使用12M晶振,一个周期是1微秒使用定时器1

工作于方式0,最大值为65535,以产生200HZ的频率为

例:

200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电12

平或低电平的时间为2500 微秒。这样,定时值应设为65535-2500=63035,将它转换为十六进制则为:F63B。具体程序请看f200.asm

频率递增:

200HZ:63035:F63B

250HZ:63535:F82F

300HZ:63868:F97C

5.3 200HZ频率输出

程序介绍:利用定时器定时,在P1.0 口产生200HZ 的频率输出。实际应用例如:传感器前级推动。

程序实例(F200.ASM):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP DIN0

MAIN:

CLR P1.0 ;产生一个低电平,实际上

是从p1.0口产生频率

MOV TMOD,#00010000B ;定时器1工作于方式0

MOV TH1,#0F6H

MOV TL1,#3BH ;频率产生的时间,详细请

见频率公式

SETB EA ;开总中断

13

SETB TR1 ;开定时器1运行

SETB ET1 ;开定时器1允许

LOOP: AJMP LOOP ;无限循环

DIN0: CPL P1.0 ;产生一个高电平,

下次来就是低电平(因为取反),一个高电平和一个低电平形成一个周期

MOV TH1,#0F6H

MOV TL1,#3BH ;重置频率产生时间

RETI ;返回

END

5.4 200——250HZ变化频率输出

程序介绍:利用定时器定时时间的变化,由P1.0 口

产生200——250HZ变化的频率。实际应用例如:传感器

前级推动、频率发生器。

程序实例(F250.ASM):

ORG 0000H

AJMP MAIN

相关文档
最新文档