从新建一个空白程序开始,从头写一个程序框架,能有助于更好的理解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中
-
mcu
+关注
关注
146文章
17143浏览量
351117 -
AVR
+关注
关注
11文章
1123浏览量
78658 -
C语言
+关注
关注
180文章
7604浏览量
136780
发布评论请先 登录
相关推荐
AVR单片机C语言程序框架(单片机最简操作系统)及详解
MPLAB X IDE 4.05没有AVR设备?
利用MPLAB® Harmony开发框架缩短开发时间
MPLAB Harmony开发框架PIC32单片机中的作用说明
利用MPLAB Harmony软件框架的互联模块整合程序
MPLAB X集成开发环境现已支持AVR单片机
美国微芯科技推出MPLAB®X集成开发环境(IDE)5.05版,可支持大部分AVR MCU
如何安装MPLAB Harmony v3软件开发框架

AVR的自编程功能

像使用PIC® MCU一样在MPLAB® X IDE中开发AVR® MCU

适用于AVR MCU的MPLAB XC8 C编译器用户指南

MPLAB XC8嵌入式工程师用户指南——AVR MCU

评论