51单片机实用汇编程序库(精品)

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

51单片机实用汇编程序库

51 单片机实用程序库

4.1 流水灯

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

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

程序实例(LAMP.ASM)

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

9

MOV A,#00H

MOVP1,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 口产生高低电平地形成方波/////

/////////

ACALLDELAY

SETBP1.0

ACALL DELAY

10

CLRP1.0

AJMPMAIN

;//////////////////////////////////////////////////

DELAY:

MOV R1,#0FFH

DJNZR1,$

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: INCTFLAG

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

AJMPMAIN

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变化的频率。实际应用例如:传感器

相关文档
最新文档