第5章 PIC16F877的外围功能模块
5.1.2 简单应用实例
该例用于令与PORTD口相连的8个发光二极管前4个点亮,后4个熄灭。在调试程序前,应使与PORTD口相连的8位拔码开关拔向相应的位置。
例5.1 PORTD输出
#include main() { TRISD=0X00; /*TRISD寄存器被赋值,PORTD每一位都为输出*/ while(1); /*循环执行点亮发光二极管的语句*/ { PORTD=0XF0; /*向PORTD送数据,点亮LED(由实验模板*/ /*的设计决定相应位置低时LED点亮)。*/ } } 5.2.1 MSSP模块SPI方式功能简介 下面是一段简单的SPI初始化例程,用于利用SPI工作方式输出数据的场合。 例5.2 SPI初始化程序 /*spi初始化子程序*/ void SPIINIT() { PIR1=0; /*清除SPI中断标志*/ SSPCON=0x30; /* SSPEN=1;CKP=0 , FOSC/4 */ SSPSTAT=0xC0; TRISC=0x00; /*SDO引脚为输出,SCK引脚为输出*/ } 5.2.3 程序清单 下面给出已经在实验板上调试通过的一个程序,可作为用户编制其它程序的参考。 #include /*该程序用于在8个LED上依次显示1~8等8个字符*/ static volatile int table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff}; volatile unsigned char data; #define PORTAIT(adr,bit) ((unsigned)(&adr)*8+(bit)) /*绝对寻址位操作指令*/ static bit PORTA_5 @ PORTAIT(PORTA,5); /*spi初始化子程序*/ void SPIINIT() { PIR1=0; SSPCON=0x30; /* SSPEN=1;CKP=0 , FOSC/4 */ SSPSTAT=0xC0; TRISC=0x00; /*SDO引脚为输出,SCK引脚为输出*/ } /*系统各输入输出口初始化子程序*/ void initial() { TRISA=0x00; /*A口设置为输出*/ INTCON=0x00; /*关闭所有中断*/ PORTA_5=0; /*LACK送低电平,为锁存做准备*/ } /*SPI发送子程序*/ void SPILED(int data) { SSPBUF=data; /*启动发送*/ do { ; }while(SSPIF==0); /*等待发送完毕*/ SSPIF=0; /*清除SSPIF标志*/ } /*主程序*/ main() { unsigned I; initial(); /*系统初始化*/ SPIINIT() ; /*SPI初始化*/ for(i=8;i>0;i--) /*连续发送8个数据*/ { data=table[i]; /*通过数组的转换获得待显示的段码*/ SPILED(data); /*发送显示段码显示*/ } PORTA_5=1; /*最后给锁存信号,代表显示任务完成*/ } 5.3.3 程序清单 下面给出已经在实验板上调试通过的程序,可作为用户编制其它程序的参考。有关显示部分的SPI初始化,请读者参考5.2节。 #include /*该程序用于按下相应的键时,在第一个8段LED上显示相应的1~4的字符*/ #define PORTAIT(adr,bit) ((unsigned)(&adr)*8+(bit)) /*绝对寻址位操作指令*/ static bit PORTA_5 @ PORTAIT(PORTA,5); #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit)) /*绝对寻址位操作指令*/ static bit PORTB_5 @ PORTBIT(PORTB,5); static bit PORTB_4 @ PORTBIT(PORTB,4); static bit PORTB_1 @ PORTBIT(PORTB,1) ; static bit PORTB_2 @ PORTBIT(PORTB,2) ; unsigned int I; unsigned char j; int data; /*spi初始化子程序*/ void SPIINIT() { PIR1=0; SSPCON=0x30; SSPSTAT=0xC0; TRISC=0xD7; /*SDO引脚为输出,SCK引脚为输出*/ } /*系统各输入输出口初始化子程序*/ void initial() { TRISA=0xDF; TRISB=0XF0; /*设置与键盘有关的各口的数据方向*/ INTCON=0x00; /*关闭所有中断*/ data=0X00; /*待显示的寄存器赋初值*/ PORTB=0X00; /*RB1 RB2 先送低电平*/ j=0; } /*软件延时子程序*/ void DELAY() { for(i = 6553; --i ;) continue; } /*键扫描子程序*/ int KEYSCAN() { while(1) { if ((PORTB_5==0)||(PORTB_4==0)) break; } /*等待有键按下*/ DELAY(); /*软件延时*/ if ((PORTB_5==0)||(PORTB_4==0)) KEYSERVE(); /*如果仍有键按下,则调用键服务子程序*/ else j=0x00; /*如果为干扰,则令返回值为0*/ return(j); } /*键服务子程序*/ int KEYSERVE() { PORTB=0XFD ; if(PORTB_5==0) j=0X01; if(PORTB_4==0) j=0X03; PORTB=0XFB; if(PORTB_5==0) j=0X02; if(PORTB_4==0) j=0X04;/*以上根据按下的键确定相应的键值*/ PORTB=0X00; /*恢复PORTB的值*/ while(1) { if((PORTB_5==1)&&(PORTB_4==1)) break;/*等待键盘松开*/ } return(j); } /*SPI发送子程序*/ void SPILED(int data) { SSPBUF=data; /*启动发送*/ do { ; }while(SSPIF==0); /*等待发送完毕 SSPIF=0; } /*主程序*/ main() { static int table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff}; initial();/*系统初始化*/ SPIINIT() ;/*SPI初始化*/ while(1) {
上一篇:PIC单片机车载仪表带CAN总线通讯源代码
下一篇:学习pic单片机经验
推荐阅读
史海拾趣
Anritsu公司是一家在电子行业内拥有悠久历史的领军企业,以下是关于该公司发展的五个相关故事:
成立与早期发展: Anritsu公司成立于1895年,最初名为Anritsu Electric Corporation。起初,该公司主要从事日本和国际市场的电信设备制造和销售业务。20世纪中叶,随着日本电信技术的发展,Anritsu开始专注于电信测试与测量领域,并开发了一系列先进的测试仪器。
技术创新与产品线扩展: 随着电信技术的迅速发展,Anritsu不断进行技术创新,推出了一系列领先的测试与测量仪器,包括频谱分析仪、网络分析仪、光通信测试设备等。这些产品在电信、无线通信、半导体等领域得到了广泛应用,为行业的发展提供了强大支持。
国际化发展: 在日本国内市场取得成功后,Anritsu逐渐将业务拓展到国际市场。公司在世界各地设立了分支机构和办事处,建立了完善的销售与服务网络,以更好地满足全球客户的需求。特别是在美国、欧洲和亚洲等地区,Anritsu建立了广泛的合作伙伴关系,拓展了市场份额。
对5G技术的贡献: 随着5G技术的快速发展,Anritsu积极投入到了5G测试与验证领域。该公司推出了一系列针对5G通信系统的测试仪器和解决方案,包括5G网络分析仪、5G基站仿真器等。Anritsu的技术和产品为全球5G网络的部署和优化提供了重要支持。
持续创新与发展: Anritsu一直以来致力于技术创新和产品研发,不断推出符合市场需求的新产品和解决方案。公司与全球领先的通信运营商、设备厂商和研究机构保持密切合作,不断优化产品性能和功能,为客户提供更高水平的技术支持和服务。
通过持续的创新和国际化发展,Anritsu已经成为了电子行业中的知名品牌,为全球通信技术的进步和发展做出了重要贡献。
汇顶科技(GOODiX)公司发展的五个故事
故事一:初创与转型
汇顶科技的故事始于2002年,当时它作为一家初创企业,在电子产业中崭露头角。公司最初专注于固定电话芯片业务,但随着国内固话市场的饱和和竞争加剧,公司迅速调整方向,切入小家电触控面板芯片领域。这一转型为公司后续的发展奠定了基础。2010年,汇顶科技获得联发科技的战略投资,其触控芯片集成至联发科技的安卓系统解决方案中,广泛应用于智能手机和平板电脑等电子产品,进一步提升了公司的市场地位。
故事二:指纹识别技术的突破
2013年,随着苹果iPhone 5s发布并搭载电容式指纹识别技术,全球范围内掀起了一股指纹识别风潮。汇顶科技敏锐地捕捉到了这一市场趋势,开始研发指纹识别芯片。经过一年的努力,公司在2014年成功推出电容式指纹识别芯片,并凭借创新技术迅速获得国内主流智能机厂商的订单。此后,汇顶科技在指纹识别领域不断取得突破,逐步成为全球最大的指纹识别芯片厂商之一。
故事三:屏下指纹识别技术的开拓者
在指纹识别技术取得成功后,汇顶科技并未满足现状,而是继续探索新技术。2016年,公司开始以屏下指纹识别技术(光学式指纹芯片)为新的主攻方向。经过一年的研发,2017年汇顶科技率先展出全球首款屏下指纹识别技术,成为该领域的开拓者。随着全面屏手机的兴起,屏下指纹识别技术迅速得到市场认可,汇顶科技也借此迎来了新一轮的增长。
故事四:多元化布局与并购
为了进一步提升竞争力,汇顶科技通过并购等方式不断拓展业务领域。2018年,公司收购德国蜂窝半导体IP企业CommSoild,进军窄带物联网领域(NB-IoT)。2020年,汇顶科技又收购恩智浦半导体的语音及音频业务单元(NXP Voice & Audio Solutions)和德国汽车电子公司Dream Chip Technologies,分别增强智能终端音频解决方案能力和进入车规级芯片领域。这些并购不仅丰富了公司的产品线,也提升了公司在各领域的综合竞争力。
故事五:持续创新与合作
汇顶科技一直致力于技术创新和市场拓展。近年来,公司与多家知名手机厂商建立了合作关系,为其提供创新的指纹识别和触控芯片解决方案。例如,汇顶科技的创新方案组合助力小米、荣耀、iQOO等品牌的旗舰新品打造极致体验。同时,公司还不断拓展物联网领域的应用,通过构建芯片设计和软硬件产品技术综合物联网平台,推动智能化生活的实现。这些合作和创新不仅提升了公司的市场影响力,也为全球亿万消费者带来了更便捷、智能的体验。
Anaren公司是一家全球领先的无线通信和微波技术解决方案提供商,以下是该公司的发展故事:
公司成立与初期阶段:Anaren公司成立于1967年,总部位于美国纽约州Syracuse市。公司最初是由Hugh Hair和Carl Gerst Jr.两位工程师创立的,致力于提供微波电子元器件和无线通信解决方案。在创立初期,Anaren专注于为国防和航空航天行业提供高性能的微波组件和系统。
技术创新与产品推出:随着技术的发展和市场需求的变化,Anaren公司不断进行技术创新,并积极推出新产品。公司开发了一系列创新的微波电子元器件和射频无线通信模块,包括功率分配器、耦合器、滤波器、射频放大器等产品。这些产品广泛应用于卫星通信、雷达系统、航空航天等领域。
市场拓展与业务扩张:随着无线通信技术的普及和应用范围的扩大,Anaren公司开始加大对商业市场的开拓力度。公司不断拓展产品应用领域,涉足消费电子、通信基础设施、汽车电子等领域,并与全球领先的电子设备制造商和系统集成商合作,提供定制化的解决方案和服务。
收购与合并:为了加强市场竞争力和拓展业务范围,Anaren公司通过收购和合并不断扩大规模和实力。公司先后收购了多家与自身业务相关的企业,包括Unicircuit Inc、ELCOM Technologies Inc和MS Kennedy Corp等。这些收购使Anaren公司在技术、产品和市场方面实现了快速增长和巩固。
持续发展与未来展望:作为一家历史悠久的电子行业企业,Anaren公司将继续致力于技术创新和产品优化,满足不断变化的市场需求。公司将继续加强研发投入,拓展产品应用领域,提升市场竞争力。在未来,Anaren公司将秉承“创新、质量、服务”的经营理念,持续为客户提供高品质、高性能的无线通信和微波技术解决方案,实现共同发展和成功。
Active-Semi是一家专注于功率管理芯片和解决方案的领先企业。以下是该公司发展的五个相关故事:
公司成立与初期发展: Active-Semi成立于2004年,总部位于美国德克萨斯州达拉斯。公司的创始人致力于研发创新的功率管理解决方案,以满足日益增长的电子设备对于高效能耗、高性能和低成本的需求。初期,公司聚焦于LED照明、消费电子和工业应用等领域。
技术创新与产品推出: Active-Semi在功率管理领域取得了多项技术创新,不断推出具有高性能和高集成度的芯片产品。公司的产品涵盖了DC-DC转换器、AC-DC转换器、LED驱动器、电池管理器等多个子领域,并通过不断创新提高了产品性能和稳定性。
市场拓展与国际化发展: 随着产品线的扩展和市场认可度的提高,Active-Semi逐步拓展了国内外市场。公司在美国、中国、日本等地设立了销售和技术支持中心,与全球各地的客户建立了合作关系。通过与国际渠道商合作,Active-Semi的产品远销至全球各地,赢得了广泛的市场认可。
并购与战略合作: 为了加强自身的技术实力和市场地位,Active-Semi进行了一系列的并购和战略合作。其中最重要的是2018年,Active-Semi被斯图尔特半导体(Stewart Semiconductor)收购。这一并购进一步扩大了Active-Semi在功率管理领域的影响力和市场份额。
持续创新与未来展望: Active-Semi致力于持续创新,不断推出符合市场需求的新产品和解决方案。公司将继续加强技术研发投入,提升产品性能和稳定性,以满足客户在不断变化的市场需求。未来,Active-Semi将继续致力于成为功率管理领域的领先企业,并在全球范围内提供优质的产品和服务。
随着全球化进程的加速,CDIL积极寻求与国际知名企业的合作,共同推动电子产业的发展。通过与全球领先企业的合作,CDIL不仅引进了先进的技术和管理经验,还拓展了国际市场,进一步提升了公司的国际影响力。如今,CDIL的产品已远销海外多个国家和地区,为全球电子产业的发展作出了重要贡献。
这五个故事展示了CDIL在电子行业中的发展历程和取得的成就。从半导体制造的先驱到IC封装与电子制造服务的转型,再到产能提升、新技术研发以及国际合作与市场拓展,CDIL始终保持着对技术的追求和对市场的敏锐洞察。正是这些努力,使CDIL在激烈的市场竞争中脱颖而出,成为电子行业中备受瞩目的企业。
CDIL采用无晶圆厂模式生产分立半导体器件,专注于功率半导体和高可靠性组件的研发与生产。这一模式使CDIL能够更加灵活地应对市场变化,降低生产成本,提高产品竞争力。同时,公司还采用自己的封装技术,确保产品能够满足太空应用等严苛环境的严格标准。
摘要文章对相控阵天线T/R组件阵列中的微波功率放大器幅相一致性技术进行了分析和讨论,对影响单级放大器的相移特性进行了研究,并介绍了控制放大器幅相一致性的几点方法和措施… 查看全部问答∨ |
|
mtk 手机IDLE页面“中国联通”或“中国移动”标志消失的原因 我开机的时候先用socket连接了后台,下载了一些数据。每到数据写入T卡中的时候“中国移动”字样就消失了,其他的不影响,这是什么原因… 查看全部问答∨ |
|
各位高手,我对MS的MDD/PDD不是很清楚,既然是分层驱动,有没有MDD层的那些接口定义,以及与PDD的接口定义,那些接口是在哪里定义好的,有没有手册?请各位指点。… 查看全部问答∨ |
|
嵌入式爱好者的学习笔记连载(三) 1 U-Boot简介 U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot ...… 查看全部问答∨ |
|
刚开始接触驱动程序的编写,想在winXP下用Driverstudio来写编写一些驱动,但是出现了一些问题。 我安装那三个文件的顺序是这样子的: 1。Vc++ 6.0 2。win2000 DDK 3。DriverStud ...… 查看全部问答∨ |