#include<reg52.h> typedef unsigned int u16; typedef unsigned char u8; sbit LED1=P2^0; sbit key1=P3^2; void delay_10us(u16 ten_us) { while(ten_us--); } void time1_init(void) { TMOD|=0X10; TH1=0XFC; TL1=0X18; ET1=1; EA=1; TR1=1; } void main() { EX0=1; time1_init(); while(1) { } } void time1() interrupt 3 { static u16 i; TH1=0XFC; TL1=0X18; i++; if(i==500) { i=0; LED1=!LED1; } } void kk2() interrupt 0 { TR1=~TR1; }添加注释
时间: 2023-10-15 17:08:11 浏览: 150
基于TIM1控制蜂鸣器模拟电脑故障时声音-C51单片机软件设计源码.rar
// 引入头文件reg52.h
#include<reg52.h>
// 定义无符号整型变量u16和无符号字符型变量u8
typedef unsigned int u16;
typedef unsigned char u8;
// 定义LED1为P2^0, key1为P3^2
sbit LED1=P2^0;
sbit key1=P3^2;
// 延时函数
void delay_10us(u16 ten_us)
{
while(ten_us--);
}
// 定时器1初始化函数
void time1_init(void)
{
TMOD|=0X10; // 设置为定时器1方式
TH1=0XFC; // 定时器1高8位赋初值
TL1=0X18; // 定时器1低8位赋初值
ET1=1; // 允许定时器1中断
EA=1; // 开总中断
TR1=1; // 启动定时器1
}
void main()
{
EX0=1; // 开启外部中断0
time1_init(); // 调用定时器1初始化函数
while(1) {
}
}
// 定时器1中断服务函数
void time1() interrupt 3
{
static u16 i;
TH1=0XFC; // 定时器1高8位赋初值
TL1=0X18; // 定时器1低8位赋初值
i++; // 计数器加1
if(i==500) // 当计数器等于500时
{
i=0; // 计数器清零
LED1=!LED1; // LED1取反
}
}
// 外部中断0服务函数
void kk2() interrupt 0
{
TR1=~TR1; // 定时器1开关取反
}
阅读全文