历史上的今天
返回首页

历史上的今天

今天是:2025年02月11日(星期二)

正在发生

2020年02月11日 | 对PIC CCS编译器的一些使用心得

2020-02-11 来源:eefocus

简介:一直在用PIC CCS的编译器,给我的感觉就是:既有一些其它编译器无法比拟的地方。也有一些让人头痛的地方。


首先,感觉最大的好处就是内置了丰富的函数库,这一点让我感觉非常爽。可以让人腾出时间来,把更多的精力花在产品的开发上,而不是花在子程序的编写上。比如说delay_ms(),这个延时函数真的很不错,并不会随着晶振的改变而改变时间。还有串口引脚绑定,简直太方便了,只要一句话就行


#use rs232(baud=9600, xmit="PIN"_A2,rcv=PIN_A3)


还有集成了USB库等。


不过,CCS也有许多不尽人意的地方,比如说常量数组的长度问题,最多只能有0-255个长度的数组。写液晶驱动的时候就很有麻烦,显示一幅128*64的图片必须得放在四个数组里面才行,同时也加大了程序的开销。


还有就是常量指针的问题,前一阵移植圈圈的USB固件的时候,发现怎么也无法枚举成功。经过一阵瞎折腾,发现编译竟然不支持常量指针,害得我把存放描述符的结构体全部改成了数组。并且一个一个的往主机传送,才解决了这个问题。同时写液晶驱动时也会存在这个问题,必须得把字模数组定义成全局变量才行。


还有一个令人头疼的就是编译器不区分大小写,移植圈圈的程序时,发现怎么也编译不过,最后终于发现原来是大小写的问题。感觉这是个严重的问题,如果长时间在这编译器里写程序,很可能会养成大小写不分的习惯。


还有(*((volatile uchar *)PORT_A)),像这样的语句在CCS中会被报错,而在Keil及VC中则可以正常通过。


还有一点,感觉CCS 的编译器语法不怎么严谨,比如说我定义一个数组:


int8 a[]={


0x01,


0x02,


0x03,


0x04


};


如果我写成这样:


int8 a[]={


0x01,


0x02,


0x03


0x04


};


则仍然可以正常通过。


虽然CCS有许多不好的地方,但是相对于HI-TECH,我更喜欢CCS.


推荐阅读

史海拾趣

GE Sensing ( Amphenol Advanced Sensors )公司的发展小趣事

对于4h的交流电源定时器(555,BH4024)电路,网友可能会提出一系列问题。以下是一些常见问题及其详细回答:

1. 电路的基本工作原理是什么?

回答:该电路结合了555定时器(作为时基电路)和BH4024(7级二进制串行计数器/分频器)来实现4小时的定时功能。555定时器用于产生定时信号,而BH4024则负责将定时信号转换成所需的时间间隔。每当按下AN(定时触动按钮)时,电路开始计时,并在4小时后自动切断交流电源。

2. 如何调整定时时间?

回答:直接调整4小时的定时时间可能不直接通过电路中的元件实现,因为定时时间主要由BH4024的分频特性和555定时器的振荡频率决定。然而,可以通过改变555定时器的外部电阻和电容值来调整其振荡频率,但这通常会影响整个电路的定时精度和稳定性。对于精确调整至4小时,可能需要使用微控制器或其他可编程逻辑设备来替代或辅助BH4024和555定时器。

3. 电路中的555定时器具体起到什么作用?

回答:在这个电路中,555定时器作为时基电路,负责产生稳定的振荡信号。这个振荡信号的频率和占空比可以通过调整与555定时器相连的电阻和电容值来改变。然而,在这个特定的应用中,555定时器的输出信号通常被用作BH4024的输入信号,以便控制BH4024的计数和分频过程。

4. BH4024是如何实现定时功能的?

回答:BH4024是一个7级二进制串行计数器/分频器,它能够根据输入的时钟信号进行计数,并在达到预定次数后输出一个翻转信号。在这个电路中,BH4024的计数频率由555定时器的输出信号决定。当计数器达到某个预设值时(这个值决定了4小时的定时长度),BH4024会输出一个信号来切断交流电源。

5. 电路中的电源要求是什么?

回答:电路中的电源要求取决于所使用的555定时器和BH4024的具体型号以及电路中的其他元件。通常情况下,555定时器可以在较宽的电源电压范围内工作(如4.5V至16V),但具体值应参考器件的数据手册。对于BH4024和其他元件,也应遵循类似的电源要求。此外,由于该电路涉及交流电源的控制,因此还需要注意电路的安全性和稳定性问题。

6. 如何确保电路的可靠性和安全性?

回答:为了确保电路的可靠性和安全性,需要采取以下措施:

  • 选择质量可靠的元件和器件,并按照正确的规格和参数进行连接。
  • 在电路设计中考虑适当的保护措施,如过流保护、过压保护等。
  • 在实际使用中,注意避免电路受到外部干扰和损坏。
  • 定期对电路进行检查和维护,以确保其正常运行和延长使用寿命。

7. 电路有哪些潜在的应用场景?

回答:该电路具有广泛的应用场景,包括但不限于:

  • 家庭自动化系统中的定时开关功能。
  • 工业生产线上的自动断电和重启功能。
  • 实验室和测试设备中的定时控制功能。
  • 公共场所的自动照明和节能控制功能等。

总之,对于4h的交流电源定时器(555,BH4024)电路,网友可能会关注其工作原理、定时时间调整、元件作用、电源要求、可靠性和安全性以及潜在应用场景等方面的问题。以上回答旨在提供全面的信息和指导。

FEI Microwave Inc公司的发展小趣事

随着5G技术的商用化,微波通信市场迎来了新的发展机遇。为了满足市场需求,FEI Microwave Inc公司迅速调整研发策略,加大投入力度,成功研发出了一系列针对5G应用的微波通信产品。这些产品以其高性能、高可靠性和高性价比迅速在市场上获得了认可,为FEI Microwave Inc公司赢得了更多的市场份额。

意瑞(COSEMITECH)公司的发展小趣事

随着业务的不断发展和市场的不断扩大,意瑞半导体也积极寻求外部投资和战略合作。公司先后获得了得彼投资、架桥投资、深创投等机构超2亿元的股权投资,为公司的持续发展提供了有力的资金保障。此外,意瑞半导体还积极参与各种行业活动和展览,与业界同仁进行深入交流和合作,共同推动半导体行业的发展。

以上五个故事素材可以根据需要进一步扩展和细化,以形成完整的、具有吸引力的电子行业意瑞半导体公司的发展故事。

Delta Electronics公司的发展小趣事

Delta Electronics在电源管理技术方面一直处于行业领先地位。公司不断投入研发资源,推动电源技术的创新和进步。其中,Delta开发的高效率开关式电源供应器,以其高效、稳定和可靠的性能,赢得了全球客户的广泛认可。此外,公司还积极推广绿色能源和节能技术,为客户提供环保、节能的电源解决方案。

Chip Quik公司的发展小趣事

为了进一步拓展业务,Chip Quik公司积极寻求与电子制造商、维修中心和分销商等合作伙伴建立合作关系。通过与这些合作伙伴的紧密合作,公司能够更好地了解市场需求,优化产品供应链,提高市场覆盖率。

Hi-Tron Semiconductor Corp公司的发展小趣事

为了进一步拓展业务,Chip Quik公司积极寻求与电子制造商、维修中心和分销商等合作伙伴建立合作关系。通过与这些合作伙伴的紧密合作,公司能够更好地了解市场需求,优化产品供应链,提高市场覆盖率。

问答坊 | AI 解惑

老板一定要买正版EDA软件,有没有价廉物美的?

一直用altium designer,之前也用过ORCAD一段时间,仿真一般用PROTEUS。现在老板要买正版的,联系了ALTIUM报价太贵,有没有别的推荐?…

查看全部问答>

用VHDL实现正弦波

用定制ROM的方法完成正弦波设计···…

查看全部问答>

Linux LCD驱动:LCD右屏颜色不对,左屏颜色正常(android)。

在做基于omap3430的android开发是,lcd驱动遇到如下问题:LCD可以正常显示,但是右边屏幕有些地方颜色泛蓝,请问调过LCD的专家帮忙。…

查看全部问答>

《EVC高级编程及其应用开发》中第八章就一个例子,利用ADO访问ACCESS的一个问题

  为什么程序的CreataConnection()时就该语句hr= CLSIDFromProgID( g_szADOCE31ConnProgID, &tClsid );就无法正确执行。 在程序中只量把ADOCE30.h换成了ADOCE31.h。另外程序中所有的ADOCE30也全换成了ADOCE31。 急!!参与有分啊~~~~ ...…

查看全部问答>

USB FOR KITL 到底要如何使用

http://blog.eeworld.net/gooogleman/archive/2009/04/03/4001784.aspx 按照上面KITL的教程指示,结果在DNW 上显示  USB serial wait for connecting . 此时点机 PB上的 attach device 则出现下列错误: (CoreCon)  16:19:5 ...…

查看全部问答>

mobile c++ 手机关机处理事件

mobile c++  手机关机处理事件 我想在手机关机时响应到一个事件,然后在这个事件中做一些其他处理.但现在无法得到手机关机事件. 比如:1:启动软件, 2;长按power键,3:响应到软件中的代码 4:在该代码中做其他处理. 问题:如何实现第三步?当 ...…

查看全部问答>

串口不能烧程序

前段时间在淘宝买了块STM32的板子,我收到发现串口不能烧程序,寄回卖家说用JTAG,把什么“保护”给弄了下,当时我也没具体问卖家怎么回事。这是不是说明STM32是已经用过的芯片,要不然新的片子怎么会串口都不能烧写呢? 不知道是不是?…

查看全部问答>

请教:430单片机的速度?

我使用8M晶振,读取串行flash -AT45DB081,但是速度还是达不到我的要求(用c语言写的),想超频,不知道430能超到多少,稳定吗? 各位dx有没有什么解决速度的经验。…

查看全部问答>

关于DSP上电引导的提问

最近看了两个TI的文档呢。DSP281x_HeaderFiles_QuickStart_Readme和spru095a_TMS320F28x Boot ROM Reference Guide (Rev. A)这两个文档。了解了一下 DSP有了复位信号后,会跳到0x3FFFC0这个地址上去,假设现在是BOOT-ROM映射到0x3FF000这个地址上面 ...…

查看全部问答>