日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]TIM0 查詢(xún)法使LED一秒閃爍,未使用預(yù)分頻#include#define uint unsigned int#define uchar unsigned char#define input RA3#define clk RA5#define cs_led RE0__CONFIG(0x3B31);void init();void delay(uint);void w

TIM0 查詢(xún)法使LED一秒閃爍,未使用預(yù)分頻

#include

#define uint unsigned int

#define uchar unsigned char

#define input RA3

#define clk RA5

#define cs_led RE0

__CONFIG(0x3B31);

void init();

void delay(uint);

void write_164(uchar);

uint intnum1,intnum2;

void main()

{

init();

while(1)

{

if(T0IF==1)//判斷中斷溢出位是否溢出,TOIF是否溢出和總中斷是否開(kāi)啟無(wú)關(guān)系。

{

T0IF=0;//需要軟件清零

intnum1++;

if(intnum1==3906)//一秒鐘到了

{

intnum1=0;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}

}

}

}

void init()

{

TRISA=0b11010111;

TRISE=0b11111110;

OPTION=0x08;//使用內(nèi)部時(shí)鐘信號(hào),預(yù)分頻器分配給WDT模塊,相當(dāng)于不給TM0設(shè)置預(yù)分頻,

//一個(gè)時(shí)鐘周期是一秒,當(dāng)不裝初值時(shí),256微秒之后溢出,因?yàn)闀r(shí)8位定時(shí)器。

}

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void write_164(uchar dt)

{

uchar i;

for(i=0;i<8;i++)

{

clk=0;

if(dt&0x80)

input=1;

else

input=0;

dt=dt<<1;

clk=1;

}

}

TIM0 查詢(xún)法使LED一秒閃爍,使用預(yù)分頻

#include

#define uint unsigned int

#define uchar unsigned char

#define input RA3

#define clk RA5

#define cs_led RE0

__CONFIG(0x3B31);

void init();

void delay(uint);

void write_164(uchar);

uint intnum1,intnum2;

void main()

{

init();

while(1)

{

if(T0IF==1)//判斷中斷溢出位是否溢出,TOIF是否溢出和總中斷是否開(kāi)啟無(wú)關(guān)系。

{

T0IF=0;//需要軟件清零

TMR0=61;//重新給定時(shí)器裝初值。

intnum1++;

if(intnum1==20)//一秒鐘到了

{

intnum1=0;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}

}

}

}

void init()

{

TRISA=0b11010111;

TRISE=0b11111110;

OPTION=0x07;//使用內(nèi)部時(shí)鐘信號(hào),預(yù)分頻器分配給TIM0模塊,256分頻。

//一個(gè)時(shí)鐘周期是一秒,當(dāng)不裝初值時(shí),256微秒之后溢出,因?yàn)闀r(shí)8位定時(shí)器。

TMR0=61;//256*Y=50000,=>Y=195,256-195=61,這樣就是50ms溢出一次,溢出20次就是1s。

}

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void write_164(uchar dt)

{

uchar i;

for(i=0;i<8;i++)

{

clk=0;

if(dt&0x80)

input=1;

else

input=0;

dt=dt<<1;

clk=1;

}

}

TIM0 中斷法使LED一秒閃爍,使用預(yù)分頻

#include

#define uint unsigned int

#define uchar unsigned char

#define input RA3

#define clk RA5

#define cs_led RE0

__CONFIG(0x3B31);

void init();

void delay(uint);

void write_164(uchar);

uint intnum1,intnum2;

void main()

{

init();

while(1)

{

if(intnum1==2)//一秒鐘到了

{

intnum1=0;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}

}

}

void init()

{

TRISA=0b11010111;

TRISE=0b11111110;

OPTION=0x07;//使用內(nèi)部時(shí)鐘信號(hào),預(yù)分頻器分配給TIM0模塊,256分頻。

//一個(gè)時(shí)鐘周期是一秒,當(dāng)不裝初值時(shí),256微秒之后溢出,因?yàn)闀r(shí)8位定時(shí)器。

INTCON=0xa0;//GIE=1,開(kāi)總中斷,T0IE=1,開(kāi)啟T0中斷,T0IE是TMR0 溢出中斷允許位。

TMR0=61;//256*Y=50000,=>Y=195,256-195=61,這樣就是50ms溢出一次,溢出20次就是1s。

}

void interrupt time0()

{

T0IF=0;//由于只開(kāi)啟了TMR0中斷,所以不用查詢(xún)是哪個(gè)中斷,能進(jìn)來(lái)的肯定是TMR0溢出中斷,直接將中斷溢出標(biāo)志位清零,

TMR0=61;

intnum1++;

}

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void write_164(uchar dt)

{

uchar i;

for(i=0;i<8;i++)

{

clk=0;

if(dt&0x80)

input=1;

else

input=0;

dt=dt<<1;

clk=1;

}

}

TMR1 中斷法TIM0 中斷法使LED一秒閃爍,不設(shè)置預(yù)分頻。

#include

#define uint unsigned int

#define uchar unsigned char

#define input RA3

#define clk RA5

#define cs_led RE0

__CONFIG(0x3B31);

void init();

void delay(uint);

void write_164(uchar);

uint intnum1,intnum2;

void main()

{

init();

while(1)

{

if(intnum1==20)//一秒鐘到了

{

intnum1=0;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}

}

}

void init()

{

TRISA=0b11010111;

TRISE=0b11111110;

INTCON=0xc0;//GIE=1,開(kāi)總中斷,開(kāi)啟第一外設(shè)中斷

PIE1=0x01;//開(kāi)啟定時(shí)器1的中斷

TMR1L=(65536-50000)%256;

TMR1H=(65536-50000)/256;//進(jìn)入一次中斷,是50ms,

T1CON=0x01;//不設(shè)置預(yù)分頻,關(guān)閉定時(shí)器1晶振使能控制位,與外部時(shí)鐘同步,選擇內(nèi)部時(shí)鐘,使能定時(shí)器1,

}

void interrupt time1()

{

TMR1IF=0;//將中斷溢出標(biāo)志位清零,

TMR1L=(65536-50000)%256;

TMR1H=(65536-50000)/256;

intnum1++;

}

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void write_164(uchar dt)

{

uchar i;

for(i=0;i<8;i++)

{

clk=0;

if(dt&0x80)

input=1;

else

input=0;

dt=dt<<1;

clk=1;

}

}

TMR1 中斷法TIM0 中斷法使LED400ms閃爍,設(shè)置預(yù)分頻

#include

#define uint unsigned int

#define uchar unsigned char

#define input RA3

#define clk RA5

#define cs_led RE0

__CONFIG(0x3B31);

void init();

void delay(uint);

void write_164(uchar);

uint intnum1,intnum2;

void main()

{

init();

while(1)

{

/* if(intnum1==20)//一秒鐘到了

{

intnum1=0;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}*/

}

}

void init()

{

TRISA=0b11010111;

TRISE=0b11111110;

INTCON=0xc0;//GIE=1,開(kāi)總中斷,開(kāi)啟第一外設(shè)中斷

PIE1=0x01;//開(kāi)啟定時(shí)器1的中斷

TMR1L=(65536-50000)%256;

TMR1H=(65536-50000)/256;//如果不設(shè)置預(yù)分頻,進(jìn)入一次中斷,是50ms,現(xiàn)在設(shè)置8倍預(yù)分頻,進(jìn)入一次中斷是400ms。

T1CON=0x31;//設(shè)置8倍預(yù)分頻,關(guān)閉定時(shí)器1晶振使能控制位,與外部時(shí)鐘同步,選擇內(nèi)部時(shí)鐘,使能定時(shí)器1,

}

void interrupt time1()

{

TMR1IF=0;//將中斷溢出標(biāo)志位清零,

TMR1L=(65536-50000)%256;

TMR1H=(65536-50000)/256;

//intnum1++;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void write_164(uchar dt)

{

uchar i;

for(i=0;i<8;i++)

{

clk=0;

if(dt&0x80)

input=1;

else

input=0;

dt=dt<<1;

clk=1;

}

}

TMR2預(yù)分頻 后分頻

#include

#define uint unsigned int

#define uchar unsigned char

#define input RA3

#define clk RA5

#define cs_led RE0

__CONFIG(0x3B31);

void init();

void delay(uint);

void write_164(uchar);

uint intnum1,intnum2;

void main()

{

init();

while(1)

{

if(intnum1==1000)//本來(lái)預(yù)分頻1:1時(shí)是200ms到了,現(xiàn)在預(yù)分頻是4.所以是200*4 ms到了,由于后分頻1:2,所以是200*4*2 ms

{

intnum1=0;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}

}

}

void init()

{

TRISA=0b11010111;

TRISE=0b11111110;

INTCON=0xc0;//GIE=1,開(kāi)總中斷,開(kāi)啟第一外設(shè)中斷外圍功能模塊中斷

PIE1=0x02;//開(kāi)啟定時(shí)器2的中斷

TMR2=56;

T2CON=0x0d;//預(yù)分頻1:4,使能tmr2計(jì)數(shù)允許/禁止控制位,預(yù)分頻1:4后分頻1:2,

}

void interrupt time1()

{

TMR2IF=0;//將中斷溢出標(biāo)志位清零,

TMR2=56;

intnum1++;

}

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void write_164(uchar dt)

{

uchar i;

for(i=0;i<8;i++)

{

clk=0;

if(dt&0x80)

input=1;

else

input=0;

dt=dt<<1;

clk=1;

}

}

TMR2預(yù)分頻 后分頻 周期寄存器

#include

#define uint unsigned int

#define uchar unsigned char

#define input RA3

#define clk RA5

#define cs_led RE0

__CONFIG(0x3B31);

void init();

void delay(uint);

void write_164(uchar);

uint intnum1,intnum2;

void main()

{

init();

while(1)

{

if(intnum1==1000)//本來(lái)預(yù)分頻1:1時(shí)是100ms到了,現(xiàn)在預(yù)分頻是4.所以是100*4 ms到了,由于后分頻1:2,所以是100*4*2 ms

{

intnum1=0;

intnum2++;

cs_led=0;

if(intnum2==1)

write_164(0xfd);

if(intnum2==2)

{

intnum2=0;

write_164(0xff);

}

}

}

}

void init()

{

TRISA=0b11010111;

TRISE=0b11111110;

INTCON=0xc0;//GIE=1,開(kāi)總中斷,開(kāi)啟第一外設(shè)中斷外圍功能模塊中斷

PIE1=0x02;//開(kāi)啟定時(shí)器2的中斷

TMR2=0;

PR2=100;//周期寄存器

T2CON=0x0d;//預(yù)分頻1:4,使能tmr2計(jì)數(shù)允許/禁止控制位,預(yù)分頻1:4后分頻1:2,

}

void interrupt time1()

{

TMR2IF=0;//將中斷溢出標(biāo)志位清零,

//TMR2=56;

intnum1++;

}

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void write_164(uchar dt)

{

uchar i;

for(i=0;i<8;i++)

{

clk=0;

if(dt&0x80)

input=1;

else

input=0;

dt=dt<<1;

clk=1;

}

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉