"MPLAB XC8_C 编译器用户指南"
在“让应用程序执行所需的操作”这一主题中,主要讨论的是编程技术、应用程序设计以及如何解决与应用程序执行特定任务相关的常见问题。以下是相关知识点的详细说明:
1. **输出端口毛刺**:输出端口产生毛刺通常是由于使用非volatile变量访问端口位导致的。volatile关键字告诉编译器该变量的值可能在编译器不知情的情况下被改变,确保每次读写操作都会直接访问硬件,避免不必要的优化导致的意外行为。
2. **链接自举程序和可下载应用程序**:在PIC18器件上,自举程序和应用程序通常分配不同的程序存储空间,以避免相互干扰。自举程序通常不偏移,而应用程序的代码会进行偏移,使得自举程序在复位和中断位置加载真正的应用程序代码。在中档器件上,可能需要对自举程序的部分代码进行偏移,同时应用程序定义中断处理。
3. **编译器选项--CODEOFFSET**:这个选项允许用户指定程序代码的偏移地址,以便在内存中为不同部分预留空间。必须检查映射文件以确保没有内容落在保留区域。
4. **防止代码被盗用**:虽然Microchip的产品提供了代码保护功能,但没有绝对的安全保证。代码保护是一个持续发展的过程,旨在对抗恶意的攻击。用户应理解,代码保护并不能保证代码的绝对安全,而是增加攻击的难度。
5. **printf函数发送文本到外设**:printf是一个通用的输出函数,通常与标准输出设备(如显示器)关联。在嵌入式系统中,需要适配器函数或者库来重定向printf到特定外设,如串行端口。
6. **校准器件上的振荡器**:振荡器的校准通常涉及修改微控制器内部的寄存器设置,以调整振荡频率,使其符合应用需求。
7. **变量放入PIC18的外部程序存储器**:在某些微控制器中,外部程序存储器也可以存储变量,但这需要了解特定器件的存储结构和编程模型。
8. **实现延时**:延时通常通过循环计数或者使用定时器来实现,根据系统的时钟周期和需要的延时时间来计算循环次数或定时器配置。
9. **循环移位一个变量**:循环移位是位操作的一种,通过左移或右移位数,将变量的位循环移动,通常涉及到位操作指令或编程库函数。
这些知识点对于使用MPLAB XC8_C编译器开发嵌入式系统应用程序的工程师来说是至关重要的,理解和掌握它们有助于编写更高效、可靠且安全的代码。在实际工程中,还需要根据具体的硬件平台和软件需求灵活应用。