用定時器T0查詢方式2 P0口8位控制LED閃爍 T1查詢方式2 P1口8位控制LED閃爍
阿新 • • 發佈:2019-02-11
//用定時器T0查詢方式P0口8位控制LED閃爍T1查詢方式P1口8位控制LED閃爍
#include<reg52.h> // 包含52微控制器暫存器定義的標頭檔案
#define uchar unsigned char
#define uint unsigned int
/**************************************************************
函式功能:主函式
**************************************************************/
uint p,q;
void main(void)
{
p=0;//由於閃爍速度太快,看不出來,所以通過計數實現延遲
q=0;//由於閃爍速度太快,看不出來,所以通過計數實現延遲
TMOD=0x22; //使用定時器T1的模式2 T0的模式2
TL0=TH0=0; //定時器T0的高8位賦初值 如果要2秒延遲大概需要中斷2000000/ 256 =7812
TR0=1; //啟動定時器T0
TF0=0; //溢位標誌位 先清零
TR1=1; //啟動定時器T1
TF1=0; //溢位標誌位 先清零
TL1=TH0=1; //定時器T1的高8位賦初值 如果要2秒延遲大概需要中斷2000000/ 256 =7812
P0=0xff; //關閉LED燈
P1=0x00; //開啟LED燈
while(1){//無限迴圈等待查詢
while(TF0==1||TF1==1){
if(TF0==1){
p=p+1;
TF0=0;
}
if(TF1==1){
q=q+1;
TF1=0;
}
}
if(p>7812){
p=0;
P0=~P0;
}
if(q>7812){
q=0;
P1=~P1;
}
}
}
#include<reg52.h> // 包含52微控制器暫存器定義的標頭檔案
#define uchar unsigned char
#define uint unsigned int
/**************************************************************
函式功能:主函式
**************************************************************/
uint p,q;
void main(void)
{
p=0;//由於閃爍速度太快,看不出來,所以通過計數實現延遲
q=0;//由於閃爍速度太快,看不出來,所以通過計數實現延遲
TMOD=0x22; //使用定時器T1的模式2 T0的模式2
TL0=TH0=0; //定時器T0的高8位賦初值 如果要2秒延遲大概需要中斷2000000/ 256 =7812
TR0=1; //啟動定時器T0
TF0=0; //溢位標誌位 先清零
TR1=1; //啟動定時器T1
TF1=0; //溢位標誌位 先清零
TL1=TH0=1; //定時器T1的高8位賦初值 如果要2秒延遲大概需要中斷2000000/ 256 =7812
P0=0xff; //關閉LED燈
P1=0x00; //開啟LED燈
while(1){//無限迴圈等待查詢
while(TF0==1||TF1==1){
if(TF0==1){
p=p+1;
TF0=0;
}
if(TF1==1){
q=q+1;
TF1=0;
}
}
if(p>7812){
p=0;
P0=~P0;
}
if(q>7812){
q=0;
P1=~P1;
}
}
}