3、SONIX单片机T0中断定时

 

与T0定时器相关的寄存器共4个;T0M,T0C,INTRQ,INTEN.

一、T0M模式寄存器

 

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

T0M

T0ENB

T0rate2

T0rate1

T0rate0

-----

-----

-----

-----

/

R/W

R/W

R/W

R/W

-----

-----

-----

-----

复位

0

0

0

0

-----

-----

-----

-----

T0ENBT0使能位,0=不使能,1=使能

 

T0rate2~T0rate0T0分频选择位

T0时钟由CPU时钟分频而来,分频比如下;

T0rate2~T0rate0

分频比

000

fCPU/256

001

fCPU/125

010

fCPU/64

011

fCPU/32

100

fCPU/16

101

fCPU/8

110

fCPU/4

111

fCPU/2

 

 

二、T0计数寄存器

T08位的计数器,计数范围为0-255T0没有重装载功能,所以默认计数是从0开始,到255+1就溢出,当然T0也可以设计数初值。

 

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

T0C

T0C7

T0C6

T0C5

T0C4

T0C3

T0C2

T0C1

T0C0

/

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

复位

0

0

0

0

0

0

0

0

T0C初值=256-T0溢出间隔时间*时钟速度)

例;T0定时10msfCPU=1mT0rate=010=fCPU/64,那么

T0C初值=256-T0溢出间隔时间*时钟速度)

=256-10ms*fcpu/64))

=64H

三、中断请求寄存器INTRQ

四、中断请求使能寄存器INTEN

名称

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

复位

INTRQ

ADCIRQ

TC1IRQ

TC0IRQ

T0IRQ

SIOIRQ

P02IRQ

P01IRQ

P00IRQ

00000000

INTEN

ADCIEN

TC1IEN

TC0IEN

T0IEN

SIOIEN

P02IEN

P01IEN

P00IEN

00000000

置位寄存器INTEN的相应位可以使能相应的中断。

当中断发生时,寄存器INTRQ相应的位会被置1,这个中断标志位需要在中断中软件清零。

T0C溢出时,如果使能了T0中断使能,则会产生T0中断,T0IRQ会被置1.

 

 

 

例;在cpu=1M情况下,T0中断定时10ms

#include<sn8p2612.h>

main()

{

FT0IEN=0; //配置中断的时候最好先关闭相应中断

T0M=0X20; //分频 fCPU/64

T0C=0X64; //10ms初值

FT0IEN=1; //开定时器T0中断

FGIE=1; //开总中断

 

while(1);

}

 

//所有中断共用一个入口,所以要在中断中查询相应的标志位来判断是哪个中断

 __interrupt T0INT(void)

{

 

if(INTRQ&0X10) //T0中断查询

{

T0C=0x64; //10MS初值重装0x64

FT0IRQ=0; //标志位手动清零

//中断处理,该干嘛干嘛去!!!

}

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值