欢迎来到天天文库
浏览记录
ID:51333576
大小:74.50 KB
页数:4页
时间:2020-03-10
《PIC12F629 基于开关控制的三段调光功能.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/************************************************PIC12F629基于开关控制的三段调光功能*******Author:ZhuWeiDate:2015-10-10Version:V1.0_______________________________实现目地:开关一次,LED1亮,再开关一次,LED2亮,再开关一次,LED1与LED2同时亮,再开关一次,重复循环,开关时间超过3S,则开关一次,重新从LED1开始亮*******************************************/#include__
2、CONFIG(0x154);#defineucharunsignedchar#defineuintunsignedint#defineLEDGP0ucharQ=0,P=0,b=0,time=0,m=0,n=0;//EEPROM存储数据uintcount=0;voiddelay(uinti);voidINIT(void);ucharread_in_eeprom(uchar);voidwrite_in_eeprom(uchar,uchar);voiddelay(uinti){uinte,r;for(e=0;e<1000;e++)for(r=0;r
3、ain(void){INIT();delay(1);Q=read_in_eeprom(0x10);P=Q;P++;if(P>5){P=0;}write_in_eeprom(0x10,P);while(1){if(P!=0x05){if(m==1){write_in_eeprom(0x10,0x00);m=0;T1CON=0x00;}if(b==1){LED=1;delay(500);b=0;LED=0;}else{LED=0;}}elseif(P==0x05){if(m==1){write_in_eeprom(0x10,0x00);m=0;T1CON=0x00;}GPIO=0x0
4、1;delay(10);GPIO=0x00;delay(10);}}}voidinterruptISR(void){if(TMR1IE&TMR1IF==1){TMR1H=(65536-50000)/256;TMR1L=(65536-50000)%256;TMR1IF=0;time++;if(time>=40){time=0;m=1;}}if(INTE&INTF==1){INTF=0;b=1;}}//读EE子函数,有返回值ucharread_in_eeprom(ucharx1){RP0=1;do{}while(RD==1);//等待读完成EEADR=x1;GIE=0;RD=1;do
5、{}while(RD==1);//等待读完成Q=EEDATA;returnEEDATA;}//写EE子函数,无返回值voidwrite_in_eeprom(ucharwrite_add,ucharwrite_data){RP0=1;do{}while(WR==1);//等待写完成EEADR=write_add;EEDATA=write_data;GIE=0;WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;do{}while(WR==1);//等待写完成WREN=0;GIE=1;}//初始化voidINIT(void){OPTION_REG=0b000000
6、10;//全局使能上拉INTCON=0xd0;//全局中断、外设中断使能TRISIO=0b11111100;//设置GP1,GP2为输入,其它口为输出CMCON=0x07;//关比较器PIR1=0x00;//中断标志位寄存器PCON=0x00;//电源控制寄存器LED=0;TMR1H=(65536-50000)/256;TMR1L=(65536-50000)%256;PIE1=0x01;//TMR1IE计时器1溢出中断使能T1CON=0x01;//TMR1ON使能Timer1}
此文档下载收益归作者所有