历史上的今天
今天是:2024年11月23日(星期六)
2019年11月23日 | PIC16F873 C程序(PICC9.8写)
2019-11-23 来源:51hei
#include unsigned int i,max,X11=0,X12=0,X13=0,X14=0,X15=0,t=2; unsigned long AD_vasule[2],ADOUT,ADOUT_2; unsigned long timer[5]; //11-15脚输出计数器 unsigned long delay11=0 ; //模拟输入延时 unsigned long TIMEALL ; unsigned long DELAY; #define TIME 2 //设置时间1秒 void up_on(void) //I/O配置函数 { INTCON=0x00; //关闭所有中断 ADCON1=0X04; //A/D模块设置AN0 AN1 AN3为模拟输入;其他引脚为数字输出 TRISC=0XE0; //设置11-15脚为输出 RBPU=0; //RB设置弱上拉 } /////////////////// void AD(void) //A/D配置函数 { ADCS1=1; //FOSC/32 A/D转换时钟 ADCS0=0; CHS2=0; //设置AN1为模拟输入 CHS1=0; CHS0=1; ADIE=1; //A/D转换中断允许 PEIE=1; //外围中断允许 TRISA1=1; //设置RA1 为输入方式 ADON=1; //A/D模块开始工作 } //////////// void tmint0(void) //timer0初始化函数 { T0CS=0; //TMR0工作于定时器方式 PSA=0; //TMR0用分频 PS2=0; //TMR0输入16分频 PS1=1; PS0=1; T0IF=0; //清除TMR0 的中断标志 T0IE=1; //TMR0中断允许 } ///////// ////////// void interrupt AD_timer(void) //A/D和timer中断函数 { if(T0IF) //判断timer0是否发生中断 { T0IF=0; //清除中断标志 if(!RB4&&RB5&&RB6) {max=0; timer[1]=TIMEALL;timer[2]=TIMEALL;timer[3]=TIMEALL; timer[4]=TIMEALL; t=4;} //控制方式1 else if(RB4&&!RB5&&RB6){ max=1; timer[2]=TIMEALL;timer[3]=TIMEALL; timer[4]=TIMEALL; if(X12!=1){X11=0;X12=1;X13=0;X14=0;X15=0; i=0; timer[0]=0;timer[1]=TIMEALL; } t=2; }//控制方式2 else if(!RB4&&!RB5&&RB6){ max=2; timer[3]=TIMEALL; timer[4]=TIMEALL; if(X13!=1){X11=0;X12=0;X13=1;X14=0;X15=0; i=0; timer[0]=0;timer[1]=TIMEALL;timer[2]=TIMEALL; } t=3; } //控制方式3 else if(RB4&&RB5&&!RB6) {max=3; timer[4]=TIMEALL; if(X14!=1){X11=0;X12=0;X13=0;X14=1;X15=0; i=0; timer[0]=0;timer[1]=TIMEALL;timer[2]=TIMEALL;timer[3]=TIMEALL; } t=4; } //控制方式4 else if(!RB4&&RB5&&!RB6) {max=4 ; //控制方式5 if(X15!=1){X11=0;X12=0;X13=0;X14=0;X15=1; i=0; timer[0]=0;timer[1]=TIMEALL;timer[2]=TIMEALL;timer[3]=TIMEALL;timer[4]=TIMEALL; } t=5; } else max=5; if(timer[0] if (timer[1] if (timer[2] if (timer[3] if (timer[4] if(delay11 delay11=0; if(max==0) {i=0;timer[0]=0;} else { if (i if(max<5) timer=0; } } } if(ADIF) //判断AD是否发生中断 { AD_vasule[0]=ADRESL; //保存AD转换结果低8位 AD_vasule[1]=ADRESH; //保存AD转换结果高2位 AD_vasule[1]=AD_vasule[1]<<2; //A/D结果高2位左移2位 AD_vasule[0]=AD_vasule[0]>>6; ADOUT=AD_vasule[1]+AD_vasule[0]; //转换成10位结果保存 ADIF=0; //清除中断标志 ADGO=1; //开始下次转换 } } /////////////////////// ////////////////////// void OUT_DELAY(void)////计算延时 { ADOUT_2=ADOUT; if(ADOUT_2<10) ADOUT_2=10; if(ADOUT_2>=818) ADOUT_2=1024; if(max==0) DELAY=TIMEALL*1024*4/(5*ADOUT_2); //控制方式1延时 else DELAY= TIMEALL*1024/(t*ADOUT_2); } //////////////////// void key5(void) //控制方式1-5 { OUT_DELAY();//计算延时 if((i==0)&&(timer[0] RC0=1; } if(((i!=0)&&(timer[0]>=TIMEALL)&&(DELAY<=TIMEALL))||((DELAY>TIMEALL)&&(timer[0]>=TIMEALL))) { RC0=0; } /////////////////////////////////// if((i==1)&&(timer[1] RC1=1; } if(((i!=1)&&(timer[1]>=TIMEALL)&&(DELAY<=TIMEALL))||((DELAY>TIMEALL)&&(timer[1]>=TIMEALL))) { RC1=0; } ////////////////////////////////////// /////////////////////////////////// if((i==2)&&(timer[2] RC2=1; } if(((i!=2)&&(timer[2]>=TIMEALL)&&(DELAY<=TIMEALL))||((DELAY>TIMEALL)&&(timer[2]>=TIMEALL))) { RC2=0; } ////////////////////////////////////// /////////////////////////////////// if((i==3)&&(timer[3] RC3=1; } if(((i!=3)&&(timer[3]>=TIMEALL)&&(DELAY<=TIMEALL))||((DELAY>TIMEALL)&&(timer[3]>=TIMEALL))) { RC3=0; } ////////////////////////////////////// /////////////////////////////////// if((i==4)&&(timer[4] RC4=1; } if(((i!=4)&&(timer[4]>=TIMEALL)&&(DELAY<=TIMEALL))||((DELAY>TIMEALL)&&(timer[4]>=TIMEALL))) { RC4=0; }
史海拾趣
|
51制作的 红外、315M、433M等遥控编码波形分析板(全套资料) 秀一下我做的小工具,HOHO! 相当于数字脉冲示波器,并具波形分析功能(单片机通过USB与计算机通讯显示波形),也是USB通讯学习板。 主要用来实现以下功能: 1)可采集红外遥控 ...… 查看全部问答> |
|
身在嵌入式领域做设计的我们,是不是有时也会爆出这样的疑问:究竟什么是嵌入式?嵌入式未来几年将如何发展?目前市场最火的嵌入式应用有哪些?最新的嵌入式技术又包括什么?还有哪些是我们未曾想到的? 本期的专题,将携嵌入式领域诸多大 ...… 查看全部问答> |
|
液晶显示模块的生产过程中,从印刷电路板整合进液晶显示面板的制程到各个模块的组装,在待组装物、设备或是人员之间,不可避免都会有移动及接触与再分离的行为出现,因此在待组装物上必然会发生静电放电的现象。虽然在环境温度及相对湿度与接地都会 ...… 查看全部问答> |
|
求助高手 msp430 P1口中断的问题 弄了好长时间了,还是不行啊 帮忙看看一下程序有错吗? #include unsigned char i; void main() { WDTCTL=WDTPW+WDTHOLD; //关看门 &nb ...… 查看全部问答> |
|
在做一个项目,要求开机后能自动检测线路的通断状态,能够让主控设备知道。觉得这个只能检测电流,于是查了查霍尔传感器,但是每条线都得用一,线有十多根,传感器占的空间太大了。请问谁知道体积小的电流传感器IC?或者谁知道更好的检测方 ...… 查看全部问答> |




