#include <reg51.h>
void InitTimer0(void) //初始化定时器0
{
TMOD = 0x01
TH0 = 0x0D8
TL0 = 0x0F0
EA = 1
ET0 = 1
TR0 = 1
}
void main(void)
{
InitTimer0()
}
void Timer0Interrupt(void) interrupt 1 //定时器0中断槐态程洞明陪序
{
TH0 = 0x0D8
TL0 = 0x0F0
//add your code here!
}
基本上是把寄存器和函数里是丛则滑0的改成1函数名()interrupt 0 {} //对应外部中断0;----》渗腊函数名()interrupt 1 {} //对应外部中断盯此1;
EX0---》EX1 等!!
显示子程序和T0中断程序有错指纯巧。裤空程序修改如下
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2
sbit LSB=P2^3
sbit LSC=P2^4
sbit led1=P2^0
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}
void delayms(uint)
void display()//显示程序不用带参数
uchar shi,ge,num,num1,num2
void main()
{
TMOD=0x11
TH0=(65535-45872)/256
TL0=(65535-45872)%256
TH1=(65535-45872)/256
TH1=(65535-45872)%256
EA=1
ET0=1
ET1=1
TR0=1
TR1=1
while(1)
{
display()
}
}
void display()//显示程序不用带参数
{
shi=num/10
ge=num%10
LSA=0LSB=0LSC=0
P0=table[shi]
delayms(5)
LSA=1LSB=0LSC=0
P0=table[ge]
delayms(5)
}
void delayms(uint zms)
{
uint i,j
for(i=zmsi>0i--)
for(j=110j>0j--)
}
void T0_time()interrupt 1
{
TH0=(65535-45872)/256
TL0=(65535-45872)%256
num1++//不是num
if(num1==4)
{
num1=0led1=~led1
}
}
void T1_time()interrupt 3
{
TH1=(65535-45872)/256
TL1=(65535-45872)%256
num2++
if(num2==20)
{
num2=0num++
if(num==60) num=0
}
}
仿真结唯键果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)