编程案例 使用MPLAB®X开发AVR®MCU 写C程序框架

从新建一个空白程序开始,从头写一个程序框架,能有助于更好的理解mplab® x开发环境所提供的各种编程资源。
1. 新建一个空白程序。其项目属性如下:
2. 新建main.c文件
在projects列表页面中,选中项目名称,点右键,通过弹出菜单,新建main.c文件。
main.c中默认已经有了几行代码: 包含xc.h头文件和主函数main()。
3. 头文件结构
在main.c文件编辑区,右键,navigate -> view includes hierarchy, 可以查看xc.h,以及下层包含的头文件。
当前main.c文件的头文件包含结构:
xc.h 头文件中,主要是对cci.h 和avr/io.h进行了包含,并且定义了使能/禁止中断的宏定义。
avr/io.h文件,是通用的“索引”型头文件,对各个avr器件的头文件进行了条件包含。
iotn817.h 文件具体定义了attiny817芯片的io口,外设寄存器等信息。
4. io口操作
    porta.dir = 0x55;
    porta.outset = 0x55;
    uint8_t pinvalue = porta.in & 0xaa;
    porta.outtgl = 0x55;
数据类型uint8_t 是标准头文件stdint.h中定义,根据上面的头文件结构,已经包含,所以不需要再进行包含。
5. 中断
-        包含中断头文件 
#include
-        中断处理函数:
isr(nvmctrl_ee_vect){
//添加中断处理函数代码
}
-        中断使能函数 ei() 或 sei().
-        中断禁止函数 di() 或 cli()
6. 延迟
-        定义 f_cpu 宏为系统频率 
#define f_cpu 33333333 //3.3mhz
-        包含延迟头文件 
#include
-        使用延迟函数
    _delay_ms(1000);
7. fuse 
fuses = 
{
        .append = 0,
        .bodcfg = active_dis_gc | lvl_bodlevel0_gc | sampfreq_1khz_gc | sleep_dis_gc,
        .bootend = 0,
        .osccfg = freqsel_20mhz_gc,
        .syscfg0 = crcsrc_nocrc_gc | rstpincfg_updi_gc,
        .syscfg1 = sut_64ms_gc,
        .wdtcfg = period_off_gc | window_off_gc,
};
fuse结构体定义在iotn817.h中

如何解决户外用电问题?储能电源轻松搞定
如何区分1位和4位数码管引脚图
如何大力推进我国MEMS传感器的产业化发展
苹果手机为何不肯用Type-C的原因
iPhone参与医学研究:口袋里的科技,让医学走得更远
编程案例 使用MPLAB®X开发AVR®MCU 写C程序框架
TT Electronics Optek 为缩短备货期专门设计的光纤发射器
三星GalaxyNote10系列机模曝光 整体造型方正硬朗辨识度较高
浅析我国光伏产业现状
4G工业路由器该如何挑选?
造成连接线提前老化的因素
华为5G面对美国的霸凌打压该如何冲出黑暗迎来光明
中芯国际取得海思14纳米FinFET工艺代工订单
无源蜂鸣器原理
希捷发布全球第二款24TB超大容量的机械硬盘
独立免备案服务器怎么选配置
UPS不间断电源为什么要预防性维护
如何给阻旋料位开关接线
Lambda数据架构和Kappa数据架构——构建现代数据架构
日立CPT2177SF/DU型彩电检修4例