本帖最后由 tcc8073 于 2011-3-21 17:40 编辑
随便写了个定时器T0方式1(中断方式)从P1.0口输出周期为0.2S的方波程序给你,按照思路自己再想想;其实程序不用老是叫人给,找本书看看,非增强型普通51中断方式也就5个,把特殊功能寄存器搞明白了就可以用了,其他的也就是个延时子程序什么的应用.
//89c52
//12M
#include<reg52.h>
sbit led=P1^0;
char tim0;
void time()interrupt 1 using 1//定时器T0中断,每50MS中断一次
{
EA=0;
tim0=++tim0;
if(tim0==2)//每0.1S做一次显示
{
tim0=0;
led=~led;
}
TMOD=0X01;
TL0=(65536-50000)%256; //50MS定时给初值
TH0=(65536-50000)/256;
TR0=1;//启动定时器
ET0=1;//开定时器中断
EA=1; //开全局中断
}
void main()
{
tim0=0;
P1=0;
TMOD=0X01;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
TF0=0;
TR0=1;
ET0=1;
EA=1;
while(1);
} |