PIC16F1938单片机编程样例

PIC16F1938单片机编程样例

ID:48315054

大小:60.67 KB

页数:9页

时间:2020-01-13

PIC16F1938单片机编程样例_第1页
PIC16F1938单片机编程样例_第2页
PIC16F1938单片机编程样例_第3页
PIC16F1938单片机编程样例_第4页
PIC16F1938单片机编程样例_第5页
资源描述:

《PIC16F1938单片机编程样例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、PIC单片机编程样例MCU:PIC16F1938;开发语言:C语言开发工具:编译环境:MPLABIED;C编译器:HI-TECHPICCCcompiler编辑软件:sourceinsight烧录工具:MPLABICD2仿真软件:Protues说明:程序已经通过编译并在仿真软件和硬件平台上成功跑起来;目的:对用到PIC16F系列单片机开发软件的群众提供样例支持,希望有帮助。Protues仿真图:1、一些定义typedefvoidVOID;typedefbitBIT;typedefunsignedcharUINT8;ty

2、pedefintINT16;typedefunsignedintUINT16;typedeflongINT32;typedefunsignedlongUINT32;VOIDdelay(VOID){inti=100;while(i--);}2、EEPROM读写/******************************************************************************功能:从EEPROM中读取一个字节的数据原型:UINT8EEPROM_read(UINT8addr)参数说

3、明:输入参数:addr输入地址输出参数:无返回:读取的字节注意:******************************************************************************/UINT8EEPROM_read(UINT8addr){UINT8EE_data;EEADRL=addr;EEPGD=0;CFGS=0;GIE=0;//禁止所有中断RD=1;asm("nop");EE_data=EEDATL;RD=0;GIE=1;//恢复所有中断returnEE_data;}/**

4、****************************************************************************功能:向EEPROM中写入一个字节的数据原型:VOIDEEPROM_write(UINT8addr,UINT8ee_data)参数说明:输入参数:addr输入地址,ee_data需要写入的数据输出参数:无返回:无注意:****************************************************************************

5、**/VOIDEEPROM_write(UINT8addr,UINT8ee_data){EEADRL=addr;EEDATL=ee_data;EEPGD=0;CFGS=0;GIE=0;//禁止所有中断WREN=1;//运行执行编程/擦除操作EECON2=0x55;//必须按这样的时序EECON2=0xAA;WR=1;while(WR==1);//等待写操作完成GIE=1;WREN=0;//禁止执行编程/擦除操作}3、ADC模块/**ADC模块的初始化*/staticVOIDADC_init(VOID){ADCON0=

6、0b00110001;//选择AN12通道、ADC使能位ADCON1=0b11100000;//AD转换结果右对齐,64分频作为转换时钟,选择VSS,VDD作为参考电压ADIF=0;//清楚AD转换标志}staticUINT16throttle=0;staticVOIDAD_Function(VOID){UINT8i;UINT16AD_result;UINT16AD_max=0;UINT16AD_min=2000;throttle=0;for(i=0;i

7、ESL=0;delay();ADCON0

8、=0x02;while(0==ADIF);//等待转换完成ADIF=0;AD_result=ADRESH;AD_result=AD_result<<8;AD_result=AD_result

9、ADRESL;throttle+=AD_result;AD_max=AD_max>AD_result?AD_max:AD_result;AD_min=AD_min

10、(AD_NUM-2);//去掉最大值和最小值,均值滤波}4、定时器0/**定时器0初始化*/staticVOIDTimer0_init(VOID){OPTION_REG=0b10000100;//禁止所有弱上拉、内部指令周期时钟32分频TMR0=TIMER0_1MS;//定时器0的中断间隔为1msTMR0IE=1;//定时器0开中断//总的中断

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。