@richey
2020-09-02T04:03:36.000000Z
字数 1982
阅读 1367
单片机
讲义
中断
定时器
#include <reg51.h>
#include "common.h"
#define FOSC 11059200ul
#define T0_H (65536-(50*FOSC)/(12*1000))/256
#define T0_L (65536-(50*FOSC)/(12*1000))%256
uint8_t counter = 0;
bit bFlag = 0;
void initSys();
sbit LED0 = P1^0;
void main(){
initSys();
while(TRUE){
if(bFlag){
bFlag = 0;
LED0 = !LED0;
}
}
}
void initSys(){
TMOD = 0x01;
TH0 = T0_H;
TL0 = T0_L;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer0() interrupt 1 {
TH0 = T0_H;
TL0 = T0_L;
if(++counter>20){
counter = 0;
bFlag = 1;
}
}
#include <reg51.h>
#include "common.h"
#define FOSC 11059200ul
#define T1_H 256-(1*FOSC)/(12*10000)
#define T1_L 256-(1*FOSC)/(12*10000)
uint8_t counter = 0;
bit bFlag = 0;
void initSys();
sbit LED0 = P1^0;
void main(){
initSys();
while(TRUE){
;
}
}
void initSys(){
TMOD = 0x20;
TH1 = T1_H;
TL1 = T1_L;
EA = 1;
ET1 = 1;
TR1 = 1;
}
void timer1() interrupt 3 {
LED0 = !LED0;
}