单片机中断程序修改

单片机中断程序修改,第1张

函数中TH1,TL1,TR1,ET1,里面的都改成0,这个是定时器0的寄存器,然后TH0,和TL0的初值也要修改;下面有初始化和中断函数了,把你纳蠢亮灯的 *** 作添加进去就OK,具体看下面:

#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

}

}

仿真结唯键果


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12324009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存