以下是一個(gè)簡(jiǎn)單的PIC單片機(jī)匯編程序示例,這個(gè)程序?qū)?shí)現(xiàn)一個(gè)LED閃爍的功能。
首先,我們需要了解PIC單片機(jī)的結(jié)構(gòu)和指令集。PIC單片機(jī)是一種基于哈佛結(jié)構(gòu)的8位微控制器,具有豐富的指令集和外設(shè)接口。
以下是一個(gè)簡(jiǎn)單的PIC單片機(jī)匯編程序示例,這個(gè)程序?qū)?shí)現(xiàn)一個(gè)LED閃爍的功能。
- 配置PIC單片機(jī)的引腳
在PIC單片機(jī)中,每個(gè)引腳都可以配置為輸入或輸出。在這個(gè)例子中,我們將使用一個(gè)引腳來(lái)控制LED的閃爍。
assembly復(fù)制代碼CONFIG FOSC = HS ; 配置振蕩器為高速振蕩器 CONFIG WDTE = OFF ; 關(guān)閉看門(mén)狗定時(shí)器 CONFIG PWRTE = OFF ; 關(guān)閉電源上電定時(shí)器 CONFIG BOREN = ON ; 開(kāi)啟內(nèi)部上電復(fù)位 CONFIG LVP = OFF ; 關(guān)閉低電壓編程模式 CONFIG MCLRE = ON ; 開(kāi)啟MCLR引腳為復(fù)位輸入 CONFIG CP = OFF ; 關(guān)閉內(nèi)部上電復(fù)位 CONFIG Cpd = OFF ; 關(guān)閉數(shù)據(jù)存儲(chǔ)器寫(xiě)保護(hù) CONFIG LVP = OFF ; 關(guān)閉低電壓編程模式
assembly復(fù)制代碼CONFIG FOSC = HS ; 配置振蕩器為高速振蕩器 CONFIG WDTE = OFF ; 關(guān)閉看門(mén)狗定時(shí)器 CONFIG PWRTE = OFF ; 關(guān)閉電源上電定時(shí)器 CONFIG BOREN = ON ; 開(kāi)啟內(nèi)部上電復(fù)位 CONFIG LVP = OFF ; 關(guān)閉低電壓編程模式 CONFIG MCLRE = ON ; 開(kāi)啟MCLR引腳為復(fù)位輸入 CONFIG CP = OFF ; 關(guān)閉內(nèi)部上電復(fù)位 CONFIG Cpd = OFF ; 關(guān)閉數(shù)據(jù)存儲(chǔ)器寫(xiě)保護(hù) CONFIG LVP = OFF ; 關(guān)閉低電壓編程模式
- 配置中斷向量表
PIC單片機(jī)支持多個(gè)中斷向量表,每個(gè)向量表可以包含多個(gè)中斷向量。在這個(gè)例子中,我們將使用一個(gè)外部中斷向量表。
assembly復(fù)制代碼ORG 0x0000 ; ORG指令用于指定程序起始地址 LJMP MAIN ; LJMP指令用于跳轉(zhuǎn)到程序起始地址 END ; END指令用于結(jié)束程序
assembly復(fù)制代碼ORG 0x0000 ; ORG指令用于指定程序起始地址 LJMP MAIN ; LJMP指令用于跳轉(zhuǎn)到程序起始地址 END ; END指令用于結(jié)束程序
- 主程序
在主程序中,我們將配置引腳為輸出模式,并使用一個(gè)循環(huán)來(lái)控制LED的閃爍。
assembly復(fù)制代碼MAIN: MOVLW 0x11 ; 將值0x11寫(xiě)入到PORT寄存器中,配置引腳為輸出模式 MOVWF PORT ; 將值寫(xiě)入到PORT寄存器中,配置引腳為輸出模式 ACALL DELAY ; 調(diào)用延時(shí)函數(shù) MOVLW 0x10 ; 將值0x10寫(xiě)入到PORT寄存器中,關(guān)閉LED MOVWF PORT ; 將值寫(xiě)入到PORT寄存器中,關(guān)閉LED ACALL DELAY ; 調(diào)用延時(shí)函數(shù) RETI ; RETI指令用于返回中斷向量表地址,實(shí)現(xiàn)LED閃爍的效果
assembly復(fù)制代碼MAIN: MOVLW 0x11 ; 將值0x11寫(xiě)入到PORT寄存器中,配置引腳為輸出模式 MOVWF PORT ; 將值寫(xiě)入到PORT寄存器中,配置引腳為輸出模式 ACALL DELAY ; 調(diào)用延時(shí)函數(shù) MOVLW 0x10 ; 將值0x10寫(xiě)入到PORT寄存器中,關(guān)閉LED MOVWF PORT ; 將值寫(xiě)入到PORT寄存器中,關(guān)閉LED ACALL DELAY ; 調(diào)用延時(shí)函數(shù) RETI ; RETI指令用于返回中斷向量表地址,實(shí)現(xiàn)LED閃爍的效果
- 延時(shí)函數(shù)
延時(shí)函數(shù)用于實(shí)現(xiàn)LED閃爍的效果。在這個(gè)例子中,我們將使用一個(gè)簡(jiǎn)單的循環(huán)來(lái)實(shí)現(xiàn)延時(shí)功能。
assembly復(fù)制代碼DELAY: MOVLW 0x00 ; 將值0x00寫(xiě)入到T2計(jì)數(shù)器寄存器中,初始化計(jì)數(shù)器 MOVWF T2L ; 將值寫(xiě)入到T2計(jì)數(shù)器寄存器低字節(jié)中,初始化計(jì)數(shù)器 MOVLW 0x3E ; 將值0x3E寫(xiě)入到T2計(jì)數(shù)器寄存器高字節(jié)中,設(shè)置計(jì)數(shù)器初值 MOVWF T2H ; 將值寫(xiě)入到T2計(jì)數(shù)器寄存器高字節(jié)中,設(shè)置計(jì)數(shù)器初值 HERE: ; HERE標(biāo)簽用于循環(huán)計(jì)數(shù)器的計(jì)數(shù)范圍為0x3E-0x3F之間,即延時(shí)時(shí)間為約1ms左右。
assembly復(fù)制代碼DELAY: MOVLW 0x00 ; 將值0x00寫(xiě)入到T2計(jì)數(shù)器寄存器中,初始化計(jì)數(shù)器 MOVWF T2L ; 將值寫(xiě)入到T2計(jì)數(shù)器寄存器低字節(jié)中,初始化計(jì)數(shù)器 MOVLW 0x3E ; 將值0x3E寫(xiě)入到T2計(jì)數(shù)器寄存器高字節(jié)中,設(shè)置計(jì)數(shù)器初值 MOVWF T2H ; 將值寫(xiě)入到T2計(jì)數(shù)器寄存器高字節(jié)中,設(shè)置計(jì)數(shù)器初值 HERE: ; HERE標(biāo)簽用于循環(huán)計(jì)數(shù)器的計(jì)數(shù)范圍為0x3E-0x3F之間,即延時(shí)時(shí)間為約1ms左右。
-
微控制器
+關(guān)注
關(guān)注
48文章
7835瀏覽量
153269 -
單片機(jī)
+關(guān)注
關(guān)注
6057文章
44807瀏覽量
644181 -
PIC
+關(guān)注
關(guān)注
8文章
507瀏覽量
88462 -
匯編程序
+關(guān)注
關(guān)注
0文章
58瀏覽量
16352
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
51單片機(jī)LCD1602匯編程序詳細(xì)資料免費(fèi)下載

51單片機(jī)匯編程序有哪些?51單片機(jī)匯編程序集詳細(xì)資料免費(fèi)下載

Proteus仿真PIC單片機(jī)匯編程序——RB中斷和按鍵顯示
單片機(jī)入門(mén)匯編程序之太陽(yáng)跟隨系統(tǒng)的程序資料免費(fèi)下載

單片機(jī)的按鍵顯示匯編程序資料免費(fèi)下載

使用51單片機(jī)控制數(shù)碼管的匯編程序免費(fèi)下載

使用51單片機(jī)點(diǎn)亮全部LED的匯編程序免費(fèi)下載

DS18B20和51單片機(jī)連接的匯編程序免費(fèi)下載
單片機(jī)入門(mén)匯編程序--直流電機(jī)的控制

單片機(jī)入門(mén)匯編程序--直流電機(jī)的單片機(jī)控制

評(píng)論