}
}
其对应的流程图如下3-2所示:
图 3-2 延时程序流程图
用C语言写比用汇编写更加动简单且易于修改。
硬件定时2ms
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP P1T0
MAIN:MOV TMOD,#02H
MOV TL0,#38H
MOV TH0,#38H
MOV IE,#82H
SETB TR0
HERE:SJMP HERE
P1T0:CPL P1.7
RETI
本程序是采用T0定时器的方式2,自动重装初值的8位计算数方式如下。(晶振频率12MHz):
计算定时初值:
T=0.210-3 =(2^8-定时初值X)机器周期(1μS)
X=2^8 - 0.210^3 =256-200=56=38H
C语言定时250ms并输出500ms的波
TH0初值为:250=(2^8-TH0初值)*震荡周期*12,得出TH0=0X06H
#include<reg51.h>
Sbit p1_0=p1^0;
Void main()
{
TMOD=0x02;
TH0=0x06; TL0=0x06;
TR0=1;
While(1)
{
Do{} while(!TF0);
P1_0=!P1_0;
}
如果采用C语言编程我们将不需要计算定时动初值只需要使用下面动语句就可以
TH0=-(2000/256);
TL0=-(2000%256);
或者
TH0=(256-20000)/256;
TL0=(256-20000)%256;
语言与汇编语言各有长处,C语言容易看懂,编程很方便,汇编更让你合理的使用和安排单片机的存储器,同一个功能,用c编程出来的文件要比用汇编编出来的大。由于本设计对时间的要求并不是很高所以我们选用C语言中的软件定时。
3.3 温湿度控制流程图与程序
流程图:
图 3-3 温湿度动控制流程图
本流程图中的23和50是我们给定的温湿度值,但是我们可以通过外部中断0和外部中断1来改变这两个参量的大小。当与之对应的外部中断产生一次中断后,就会将额定的温湿度加1。当我们要将一个数调小时只能用复位功能将额定的温湿度变为23℃和50%,这样的不足之处就是我们不能够将额定的温湿度调到23℃和50%以下,除非我们更改程序里面的参数。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>