#include<pic.h>
#include <pic1687x.h>
__CONFIG(0x1832);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90};
char LED[6]={0,0,0,0,0,0,}; //显示BCD码
const char jian[]={0X77,0Xb7,0Xd7,0Xe7,0X7b,0Xbb,0Xdb,0Xeb,0X7d,0Xbd,0Xdd,0Xed,0X7e,0Xbe,0Xde,0Xee};
int BCD1(int); //BCD吗转化程序。
void init(); //申明I/O口初始化函数
int delay(int); //申明延时函数
void interrupt ISR(void); //中断
char xianshi, temp1,VA,A,B,C; //VA为A口显示断位变量
int temp;
//---------------------------------------
//---------------------------------------
//I/O口初始化函数
void init()
{
ADCON1=7; //设置A口为普通I/O口
TRISA=0; //设置A口为输出
TRISD=0; //设置D口为输出
TRISC=0;
TRISB=0XF0;
OPTION=0x3; //tmr0为1:16
PORTC=0; // 定时器为1/16
PORTB=0XF0; //B口高入低出 上拉电阻有效
INTCON=0XA8; //开放全局。TMR0,B口中断。
TMR0=0XE; //启动TMR0
PORTD=0XFF;
PORTA=0XFF;
VA=1;
}
//--------------------------------------中断子程序
void interrupt ISR(void)
{
T0IF=0; //清中断标志
PORTD=0XFF;
PORTA=~VA;
PORTD=TABLE[LED[temp1]];
VA=VA<<1;
temp1++;
if(VA==0X40) VA=1 ,temp1=0;
if(PORTB==0XF0) xianshi=0,RC4=0;
else xianshi=3,RC4=1;
TMR0=0X10; //启动TMR0
}
//*******************************
//延时函数
int delay(int j)
{
int i;
for(i=0;i<j;i++);
}
//主函数====================
main(void)
{ init(); //调用I/O口初始化函数
while(RC2==0)
{
PORTC ^= (1<<RC7);
delay(6000);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>