從新建一個空白程序開始,從頭寫一個程序框架,能有助于更好的理解MPLAB? X開發環境所提供的各種編程資源。
1. 新建一個空白程序。其項目屬性如下:
![pYYBAGKDFXaACHQcAAEetdT_X18112.jpg](https://file.elecfans.com//web2/M00/44/10/pYYBAGKDFXaACHQcAAEetdT_X18112.jpg)
2. 新建main.c文件
在Projects列表頁面中,選中項目名稱,點右鍵,通過彈出菜單,新建main.c文件。
Main.c中默認已經有了幾行代碼: 包含xc.h頭文件和主函數main()。
![poYBAGKDFXaALKaNAAJVwC0fG0k684.jpg](https://file.elecfans.com//web2/M00/44/0E/poYBAGKDFXaALKaNAAJVwC0fG0k684.jpg)
3. 頭文件結構
在main.c文件編輯區,右鍵,Navigate -> View Includes Hierarchy, 可以查看xc.h,以及下層包含的頭文件。
![pYYBAGKDFXeABdrtAAUEuEHZ6r8712.jpg](https://file.elecfans.com//web2/M00/44/10/pYYBAGKDFXeABdrtAAUEuEHZ6r8712.jpg)
當前main.c文件的頭文件包含結構:
![poYBAGKDFXeAPs6WAAAgMiiXIYI225.jpg](https://file.elecfans.com//web2/M00/44/0E/poYBAGKDFXeAPs6WAAAgMiiXIYI225.jpg)
xc.h 頭文件中,主要是對cci.h 和avr/io.h進行了包含,并且定義了使能/禁止中斷的宏定義。
![pYYBAGKDFXeAZg57AABmDhIQQh4708.jpg](https://file.elecfans.com//web2/M00/44/10/pYYBAGKDFXeAZg57AABmDhIQQh4708.jpg)
Avr/io.h文件,是通用的“索引”型頭文件,對各個AVR器件的頭文件進行了條件包含。
![poYBAGKDFXeAGHgzAACP0EmtNkE394.jpg](https://file.elecfans.com//web2/M00/44/0E/poYBAGKDFXeAGHgzAACP0EmtNkE394.jpg)
Iotn817.h 文件具體定義了ATtiny817芯片的IO口,外設寄存器等信息。
![pYYBAGKDFXeABxR4AACJmNDACIY335.jpg](https://file.elecfans.com//web2/M00/44/10/pYYBAGKDFXeABxR4AACJmNDACIY335.jpg)
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文章
17321瀏覽量
352650 -
AVR
+關注
關注
11文章
1125瀏覽量
78886 -
C語言
+關注
關注
180文章
7614瀏覽量
137717
發布評論請先 登錄
相關推薦
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軟件開發框架
![如何安裝<b class='flag-5'>MPLAB</b> Harmony v3軟件<b class='flag-5'>開發</b><b class='flag-5'>框架</b>](https://file.elecfans.com/web1/M00/E7/FD/pIYBAGBi4qqAQ7VcAACukK7NEtA722.jpg)
AVR的自編程功能
![<b class='flag-5'>AVR</b>的自<b class='flag-5'>編程</b>功能](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
像使用PIC? MCU一樣在MPLAB? X IDE中開發AVR? MCU
![像使用PIC? <b class='flag-5'>MCU</b>一樣在<b class='flag-5'>MPLAB</b>? <b class='flag-5'>X</b> IDE中<b class='flag-5'>開發</b><b class='flag-5'>AVR</b>? <b class='flag-5'>MCU</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
適用于AVR MCU的MPLAB XC8 C編譯器用戶指南
![適用于<b class='flag-5'>AVR</b> <b class='flag-5'>MCU</b>的<b class='flag-5'>MPLAB</b> XC8 <b class='flag-5'>C</b>編譯器用戶指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MPLAB XC8嵌入式工程師用戶指南——AVR MCU
![<b class='flag-5'>MPLAB</b> XC8嵌入式工程師用戶指南——<b class='flag-5'>AVR</b> <b class='flag-5'>MCU</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論