📄 zhongduan.txt
字号:
//这是定时中断的例子
#include <pic.h>
#include <pic1687x.h>
#define PORTDIT(add,bit) ((unsigned)(&add)*8+(bit))
#define PORTBIT(add,bit) ((unsigned)(&add)*8+(bit))
static bit PORT_0 @ PORTDIT(PORTD,0); /*定义PORTD 0位*/
static bit PORT_1 @ PORTDIT(PORTD,1); /*定义PORTD 1位*/
static bit PORT_2 @ PORTDIT(PORTD,2); /*定义PORTD 2位*/
static bit PORT_3 @ PORTDIT(PORTD,3); /*定义PORTD 3位*/
static bit PORT_4 @ PORTDIT(PORTD,4); /*定义PORTD 4位*/
static bit PORT_5 @ PORTDIT(PORTD,5); /*定义PORTD 5位*/
static bit PORT_6 @ PORTDIT(PORTD,6); /*定义PORTD 6位*/
static bit PORT_7 @ PORTDIT(PORTD,7); /*定义PORTD 7位*/
//-------------------------------------------------
static bit PORTD_0 @ PORTBIT(PORTB,0); /*定义PORTB 0位*/
static bit PORTD_1 @ PORTBIT(PORTB,1); /*定义PORTB 1位*/
static bit PORTD_2 @ PORTBIT(PORTB,2); /*定义PORTB 2位*/
static bit PORTD_3 @ PORTBIT(PORTB,3); /*定义PORTB 3位*/
static bit PORTD_4 @ PORTBIT(PORTB,4); /*定义PORTB 4位*/
static bit PORTD_5 @ PORTBIT(PORTB,5); /*定义PORTB 5位*/
static bit PORTD_6 @ PORTBIT(PORTB,6); /*定义PORTB 6位*/
static bit PORTD_7 @ PORTBIT(PORTB,7); /*定义PORTB 7位*/
unsigned char s; /*每0.125S累加1*/
unsigned char ss; /*每1秒累加1*/
int i=0;
void tmint(void)
{ T0CS=0;
PSA=0;
PS2=1;
PS1=1;
PS0=1;
T0IF=0;
T0IE=1;
}
void interrupt clkint(void) //定时器中断函数
{ TMR0=0x06;
T0IF=0;
if(s++>8){ /*每S清0*/
s=0;
}
// if(i++%2==0) {RB0=0;RB2=1;} //偶数次中断RB2的LED亮
// else {RB0=1;RB2=0;} //奇数次中断RB2的LED亮
}
main(void)
{ TRISB=0x00;
PORTB=0X00;
RB0=1;RB2=0;//接两个LED,开始为全灭
tmint(); //调用定时器初始化程序
GIE=1;
// ei();
TMR0=0x06; //装入定时器初始值
while(1) //循环等待中断
{
if(s>5)
{ RB0=1 ;}
else { RB0=0;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -