| 超级好的51单片机编程例程!工程师必看! | ||
| 单片机简介与单片机的发展历史 |
I/O
口功能实例 |
|
| 定时器实例
(1秒报警,200hz输出 200-250变化输出) |
||
| 软件滤波十六进制六位数加法(数码显示) |
求六位和中的最大值和最小值(数码显示) |
|
| 求减去最大和最小值后的值(数码显示) |
除4所得软件滤波值(数码显示) |
|
| 软件模拟一个振 |
在显示频率输出的同时显示AD值(数码显示) |
|
| 过程检定(数码显示) |
||
| 按键数显,数码管显示加一 | ||
| PWM码简介及解码原理 |
||
| 智能定时的4位电子钟(带定时控制) |
智能红外工业控制器 |
|
|
51单片机学习网热心版主单片东东,收集整理的单片机教学课程(例子程序, 特别推荐!)转载请保留连接! 五、定时器功能实例 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次则一秒 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 微秒,即一个高电 平或低电平的时间为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 ;开总中断 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 ORG
001BH AJMP
DIN1 MAIN: ;定义频率200和300////////////////////////////////// F2H
EQU 30H F2L
EQU 31H F3H
EQU 32H F3L
EQU 33H ;////////////////////////////////////////////////// ;定义频率保持初值////////////////////////////////// MOV
R1,#50 MOV
R2,#02H ;////////////////////////////////////////////////// ;频率赋初值//////////////////////////////////////// MOV
F2H,#0F6H MOV
F2L,#3BH MOV
F3H,#0F8H MOV
F3L,#2FH ;////////////////////////////////////////////////// CLR
P1.0 ;在P1.0口产生一个低 电平,一个脉冲是由一个高电平和一个低电平组成的 MOV
TMOD,#00010000B ;定时器工作于方式1 MOV
TH1,F2H MOV
TL1,F2L ;200HZ输出 SETB
EA ;开总中断 SETB
TR1 ;开定时器1运行 SETB
ET1 ;开定时器1允许 LOOP:
AJMP LOOP DIN1: CPL
P1.0 ;取反P1.0口,实际 是为了不断的将p1.0的电平关系转换,即产生了频率 ;频率保持时间////////////////////////////////////// DJNZ
R1,RE MOV
R1,#50 DJNZ
R2,RE MOV
R2,#02H ;////////////////////////////////////////////////// MOV
A,F2H CJNE
A,F3H,XIA ;频率高位到300HZ 的高位了吗? AJMP
JIA ;频率高位没到 300HZ的高位值,直接将低位值加1 XIA:
INC F2L MOV
A,F2L CJNE
A,#00H,RE INC
F2H MOV
A,F2H CJNE
A,F3H,RE ;///////////////////////////////////////////// ;频率高位加到300HZ的高位值了,低位加一,到300HZ的低 位值了吗,没到出去,到了关定时器 JIA: INC
F2L ;到了将200HZ频率的低位加1 MOV
A,F2L CJNE
A,#F3L,RE CLR
TR1 ;///////////////////////////////////////////// RE: MOV
TH1,F2H MOV
TL1,F2L RETI END 51单片机学习网: 专业51单片机教学站,我们不是最好, 但是我们会争取做的更好, www.51c51.com www.8951.com ( 高速镜像站)
|