初学PIC,写了一个定时跑马灯程序,以供新手学习PIC提供子资料,文中给出了详细代码和注释,对照手册,新手完全可以看懂,便于理解和后期开发,给予新手打开PIC的大门钥匙。
1、开发环境:我选择的是 MPLAB x IDE
2、芯片型号:8位单片机,PIC16F684
3、程序功能:
(1)RC3、RC4接两个LED灯,低电平点亮
(2)时钟选用内部时钟8MHZ
(3)定时时间为1ms进一次中断
(4)计时500ms,小灯500ms亮,500ms灭
/*********************************************/
/***
芯片型号:PIC16F684
1、RC3、RC4接两个LED灯,低电平点亮
2、时钟选用内部时钟8MHZ
3、定时时间为1ms进一次中断
4、小灯500ms亮,500ms灭
*************************/
4、程序代码
/*
* File: main.c
* Author: 夏夕空
* Created on 2018年02月06日
* Version: V1.0 beta0
* 系统时钟选用内部8M晶振
*/
#include // PIC16F684 Configuration Bit Settings // 'C' source line config statements __CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON &MCLRE_OFF & CP_OFF & CPD_OFF & BOREN_OFF & IESO_ON & FCMEN_ON); #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define Time_base 1 //定时1ms #define FOSC 8000 //时钟频率8MHZ #define LED TRISC // LEDI/O口 void delay_ms(uint xms); //非精确延时,有误差 void Timer0_Init(void); //定时器0初始化 /*************************************** * 名 称:delay_ms() * 功 能:非精确延时 * 输入参数:无 * 返回参数:无 ***************************************/ void delay_ms(uint xms) { uint x,y; for(x=xms; x>0;x--) for(y=2000;y>0;y--); } /*************************************** * 名 称:Timer0_Init() * 功 能:初始化定时器0 * 输入参数:无 * 返回参数:无 ***************************************/ volatile uchar temp =0; //temp为初始值缓存 void Timer0_Init(void) { T0CS = 0; //选择定时器模式,T0CS =1为计数器模式,T0CS =0为定时器模式 T0SE = 0; //定时器上升沿递增,T0SE =0为上升沿递增,T0SE =1为下降沿递增 PSA = 0; //预分频器分给定时器 /***三种方式都可以****/ OPTION_REG &= 0xF8; //1B 1111 1000 32分频 OPTION_REG |= 0x04; //1B 0000 0100 /* PS2 = 1; //1B 0000 0100 32分频 PS1 = 0; PS0 = 0; */ // OPTION_REG = 0x04; //1B 0000 0100 32分频 T0IF = 0; //定时器0溢出标志位 GIE = 1; //总中断允许位,GIE =1为允许所有未屏蔽中断,GIE =0禁止中断 T0IE = 1; //定时器0溢出中断允许,T0IE =1,允许溢出时中断,T0IE =0不允许中断 temp = 256-((Time_base*FOSC)/4/32); //定时1ms TMR0 = temp; //重载初始值 } /*全局静态变量count*/ static uint count = 0; /*************************************** * 名 称:main() * 功 能:根据协议处理数据 * 输入参数:无 * 返回参数:无 ***************************************/ void main(void) { delay_ms(5); //等待时钟稳定 PORTC &=0xE7; //RC3,RC4选择为输出模式 Timer0_Init(); //定时器0初始化 LED &= 0xF7; //1B1111 0111选择小灯初始状态 RC3亮 LED |=0x10; //1B0001 0000 RC4灭 while(1) { if(count == 500) //500ms时间到 { count = 0; //清零计数 LED = ~LED; //小灯翻转 } else //时间没到,空等待 { } } } /*************************************** * 名 称:Timer0_Isr() * 功 能:产生1ms时基 * 输入参数:无 * 返回参数:无 ***************************************/ void interrupt Timer0_Isr(void) { if(T0IF == 1) //如果溢出中断 { T0IF = 0; //标志位清0 temp = 256-((Time_base*FOSC)/4/32); TMR0 = temp; //重载初始值 count++; //计数++ } }
上一篇:用pic16f630 MCU实现的315MHZ无线软件解码和编码.代替PT2272和pt2262
下一篇:PIC16F877输出正弦波信号PROTEUS仿真及程序
推荐阅读
史海拾趣
在电子行业中,Hamlin(现为Littelfuse的一部分)的发展充满了创新与挑战的故事。以下是五个关于Hamlin如何在Littelfuse旗下发展壮大的实际案例:
1. 从独立到并购:Hamlin的加入
Hamlin,一家在传感器领域享有盛誉的公司,于2012年被Littelfuse收购。这一战略举措标志着Littelfuse在电路保护基础上,进一步向传感器与功率器件领域扩展。Hamlin的加入为Littelfuse带来了丰富的传感器技术,特别是其在磁性传感器方面的专长,使得Littelfuse能够为客户提供更全面的解决方案。这次并购不仅增强了Littelfuse在汽车电子和工业市场的竞争力,也为其后续的技术创新和市场拓展奠定了坚实基础。
2. 创新引领:55300系列传感器的诞生
Hamlin在加入Littelfuse后,继续发挥其创新优势,推出了55300系列非接触式磁性传感器。这一系列传感器克服了传统干簧开关在机械磨损和污染方面的限制,具有长寿命、高速度、不受恶劣环境影响的特点。其广泛的工作温度范围和集成的汽车级EMI/EMC测试,使得这些传感器在汽车和工业市场得到了广泛应用,如液压缸位置、变速箱换挡位置等关键控制领域。
3. 技术突破:Hamlin在车用传感器领域的贡献
随着汽车行业的快速发展,对安全、节能和舒适性的要求日益提高。Hamlin利用其在磁感应技术上的专长,为Littelfuse的车用传感器产品线增添了新的活力。Hamlin的车用传感器涵盖了安全类、动力总成、排放和舒适性四大类别,通过检测转速、位移、位置和角度等参数,为汽车提供了精准的监控和控制。这些传感器不仅提升了汽车的性能和安全性,也满足了消费者对驾驶体验的高要求。
4. 市场拓展:Littelfuse与Hamlin的全球化战略
在Hamlin的助力下,Littelfuse加快了全球化步伐。通过在欧洲、亚洲和美国的持续扩张,Littelfuse的产品和服务覆盖了更广泛的市场。Hamlin的传感器技术成为了Littelfuse在全球市场上的一张重要名片,吸引了众多国际客户的关注。同时,Littelfuse也加大了对新兴市场的投入,特别是在中国市场,通过与本土合作伙伴的紧密合作,进一步提升了品牌影响力和市场份额。
5. 持续增长与未来展望
自Hamlin加入以来,Littelfuse的业绩实现了持续增长。通过不断的研发投入和市场拓展,Littelfuse在电路保护、传感器与功率器件领域均取得了显著成就。展望未来,Littelfuse将继续依托Hamlin等子公司的技术优势和市场资源,推动产品创新和市场升级。同时,随着新能源汽车、物联网等新兴领域的快速发展,Littelfuse将迎来更多的发展机遇和挑战,为电子行业的进步贡献更多力量。
Elpac公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和团队建设。公司建立了完善的人才培训体系,为员工提供多样化的培训和发展机会。同时,公司还鼓励员工积极参与各种创新活动和竞赛,激发员工的创新精神和创造力。这种积极向上的企业文化吸引了大量优秀人才加入Elpac公司,为公司的持续发展提供了有力保障。
随着国内市场的饱和,Adamant Co Ltd决定将目光投向更广阔的国际市场。公司通过市场调研和精准定位,成功进入了欧洲和北美市场。在国际市场的拓展过程中,Adamant Co Ltd积极寻求与当地企业的合作,通过技术共享和市场互通,实现了双赢局面。这不仅提高了公司在国际市场的竞争力,也为公司的长远发展打下了坚实基础。
品质是电子行业的生命线。Adamant Co Ltd深知这一点,因此在品质管理方面下足了功夫。公司建立了严格的品质管理体系,从原材料采购到产品生产、检测、出厂等各个环节都严格把关。同时,公司还注重品牌建设,通过提升产品形象和服务质量,赢得了客户的信任和口碑。这些努力使得Adamant Co Ltd在行业中树立了良好的品牌形象。
Eurosil Electronics Ltd公司成立于XXXX年,由一群热衷于电子科技研发的工程师创立。在成立初期,公司专注于半导体材料的研究与开发,致力于提高半导体的性能与稳定性。经过数年的努力,Eurosil成功研发出一种新型半导体材料,具有更低的能耗和更高的可靠性,这一技术突破为公司赢得了业界的广泛认可,也奠定了其在电子材料领域的重要地位。
湖北师院物理系电信专业实验室田开坤(整理)的Protel常用元件库。 包含74系列,CMOS系列,存储器,单片机,杂元件,ADC,数码管,定时器等等,中文名称,特别实用。… 查看全部问答∨ |
嵌入式相关问题,可在此提问,各位同行请在这里跟帖提问、交流。 EEWORLD在这里期待与你讨论。 欢迎大家多多说出自己的想法,并帮助坛子里的朋友回答问题~~ 老师介绍: 欧文盛: 顶嵌(www.top-e.org)高级讲师,主要研究和工作领域是嵌入 ...… 查看全部问答∨ |
TPMS是汽车轮胎压力实时监视系统“Tire Pressure Monitoring System”的英文缩写,主要用于在汽车行驶时实时地对轮胎气压进行自动监测,对轮胎漏气和低气压进行报警,以保障行车安全,是驾车者、乘车人的生命安全保障预警系统。 在汽车的高速 ...… 查看全部问答∨ |
|
装了PICC8.05,发现没找到PIC16F631的头文件 PICC9.60 也没有找到头文件 如果谁有它的编译器,麻烦上传一个吧! 或者发一个到我的邮箱yuexianhanshu@yahoo.com.cn… 查看全部问答∨ |
wince 键盘驱动的疑问, 扫描码转键值后,进入系统后发生变化 wince 6.0 + pxa270 一个简单矩阵键盘, 共6个按键 在键盘驱动的 KeyButton_GetEventEx2(UINT rguiScanCode[16], BOOL rgfKeyUp[16]) 函数中 分别映射为 VK_F1, VK_F2, VK_F3,VK_F4, VK_F5 通过打印消息分别是 vk_f1, vk_f2 vk_f3 vk_f4 vk_f5 ...… 查看全部问答∨ |
我想在应用程序中遍历整个物理内存,要想这样只能通过驱动程序实现,并把接口提供出来. 现在问题是,如何才能用驱动实现遍历这个物理内存呢?(我的内存是512M的) 请大侠们给个思路...… 查看全部问答∨ |