當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1.最簡(jiǎn)單的點(diǎn)亮LED程序(C)//實(shí)驗(yàn)?zāi)康模狐c(diǎn)亮RC0口的LED //硬件設(shè)置:撥碼開關(guān)S11的第8位置ON,其他各位關(guān)閉。 #include //包含單片機(jī)內(nèi)部資源預(yù)定義 __CONFIG(0x1832); //芯片配置字,看門狗關(guān),上電延時(shí)開,掉電

1.最簡(jiǎn)單的點(diǎn)亮LED程序(C)

//實(shí)驗(yàn)?zāi)康模狐c(diǎn)亮RC0口的LED
//硬件設(shè)置:撥碼開關(guān)S11的第8位置ON,其他各位關(guān)閉。
#include //包含單片機(jī)內(nèi)部資源預(yù)定義
__CONFIG(0x1832);
//芯片配置字,看門狗關(guān),上電延時(shí)開,掉電檢測(cè)關(guān),低壓編程關(guān),加密,4M晶體HS振蕩
#include //包含單片機(jī)內(nèi)部資源預(yù)定義
#include //包含877A的頭文件

void main() //主程序
{
while(1) //死循環(huán),讓RC0一直亮
{
TRISC=0xfe; //RC0輸出,其他輸入
PORTC=0x01; //RCO輸出高電平,點(diǎn)亮LED
}
}


2.LED8位流水燈《霹靂燈》左移到第七位,再?gòu)牡谄呶挥乙频降谝晃?,再循環(huán)。(匯編)

;MCD1實(shí)戰(zhàn)一,LED8位流水燈《霹靂燈》左移到第七位,再?gòu)牡谄呶挥乙频降谝晃?,再循環(huán)。
;該實(shí)戰(zhàn)的目的作為學(xué)習(xí)和應(yīng)用MCD1在線調(diào)試工具套件,進(jìn)行項(xiàng)目的軟件和硬件
;聯(lián)合調(diào)試的范例程序,也就是當(dāng)做一個(gè)用戶程序?qū)嵗?,而演示板暫時(shí)充當(dāng)用戶電
;路的角色。這樣就構(gòu)成了一個(gè)軟件、硬件齊全的自制項(xiàng)目模擬環(huán)境。
;本程序?qū)崿F(xiàn)的功能是,把端口RC的8條引腳全部設(shè)置為輸出模式,依次從引腳RC0
;到RC7送出高電平,然后再依次從引腳RC7到RC0送出高電平,并且周而復(fù)始,從而
;使得與該端口C相連的8只發(fā)光二極管LED循環(huán)依次點(diǎn)亮,其效果類似于一個(gè)簡(jiǎn)單的霹靂燈。
;該程序可用于PIC16F87X(A)所有系列
;PIC單片機(jī)學(xué)習(xí)網(wǎng)http://www.pic16.com
;************************************************
;《霹靂燈》程序。文件名為“mcd-led1.ASM”
;**************************************************
__CONFIG 3F39H;設(shè)置配置位中振蕩方式為XT,其它全部禁止或關(guān)閉
;****************************************************
status equ 3h ;定義狀態(tài)寄存器地址
portc equ 7h ;定義端口C的數(shù)據(jù)寄存器地址
trisc equ 87h ;定義端口C的方向控制寄存器地址
flag equ 25h ;定義一個(gè)控制左移/右移的標(biāo)志寄存器
;***********************************************************
org 0000h ;定義程序存放區(qū)域的起始地址
nop ;放置一條ICD必須的空操用指令
bsf status,5 ;設(shè)置文件寄存器的體1
movlw 00h ;對(duì)端口C的方向控制碼00H先送W
movwf trisc ;再由W轉(zhuǎn)移到方向控制寄存器
bcf status,5 ;恢復(fù)到文件寄存器體0
movlw 01h ;將00000001B先送W
movwf portc ;再由W轉(zhuǎn)移到數(shù)據(jù)寄存器
bsf flag,0 ;將左右移標(biāo)志位置1,首先進(jìn)行左移LED
bcf status,0 ;將標(biāo)志位C先清0
loop btfss status,0 ;測(cè)試進(jìn)位/借位位,是1則修改標(biāo)志
goto loop1 ;是0則不修改標(biāo)志
comf flag,1 ;FLAG的BIT0作為標(biāo)志位,把它取反
loop1 btfss flag,0 ;判斷標(biāo)志位,是1則跳到循環(huán)左移
goto loop2 ;是0則跳到循環(huán)右移
rlf portc,0 ;循環(huán)左移端口C數(shù)據(jù)寄存器,結(jié)果送W
movwf portc ;將結(jié)果再送回端口C的數(shù)據(jù)寄存器
goto loop3 ;跳過下面兩條指令
loop2 rrf portc,0 ;循環(huán)右移端口C數(shù)據(jù)寄存器,結(jié)果送回W
movwf portc ;將結(jié)果再送回端口C的數(shù)據(jù)寄存器 ;
loop3 call delay ;調(diào)用廷時(shí)子程序
goto loop ;返回
;-------------------------廷時(shí)子程序----------------------------
delay ;子程序名,也是子程序入口地址
movlw 0ffh ;將外層循環(huán)參數(shù)值FFH經(jīng)過W
movwf 20h ;送入用作外循環(huán)變量的20H單元
lp0 movlw 0ffh ;將內(nèi)層循環(huán)參數(shù)值FFH經(jīng)過W
movwf 21h ;送入用作內(nèi)循環(huán)變量的21H單元
lp1 decfsz 21h,1 ;變量21H內(nèi)容遞減,若為0跳躍
goto lp1 ;跳轉(zhuǎn)到LP1處
decfsz 20h,1 ;變量20H內(nèi)容遞減,若為0跳躍
goto lp0 ;跳躍到LP0處
return ;返回主程序
end ;源程序結(jié)束
;****************************************************************
; 進(jìn)入該實(shí)戰(zhàn)演練的工序流程如下:
; 1.軟硬件的安裝:按照本說明書前面講的”MPLAB-ICD的安裝和使用”一節(jié)內(nèi)介紹的方法操作即可.
; 2.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的”記事本”
; 這個(gè)為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過有兩點(diǎn)需要注意,一是注釋前面的
; 分號(hào)”;”必須用西文半角輸入;二是必須用”.asm”擴(kuò)展名存儲(chǔ)到事先建立的一個(gè)專用子目錄下.
; 3.打開MPLAB集成開發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動(dòng)MPLAB
; 并進(jìn)入MPLAB的桌面.
; 4.創(chuàng)建項(xiàng)目:選用菜單File>New或Project>New Project,在事先建立的一個(gè)專用子目錄下創(chuàng)建一個(gè)新項(xiàng)目,將
; 用記事本創(chuàng)建的源文件加入到該項(xiàng)目中.
; 5.建立項(xiàng)目中的目標(biāo)文件:選擇菜單Project >Build All(項(xiàng)目>建立所有文件),MPLAB將自動(dòng)調(diào)用MPASM將項(xiàng)目
; 文件管理下的源文件(.asm)匯編成十六進(jìn)制的目標(biāo)文件(.hex).
; 6.ICD參數(shù)設(shè)置:通過菜單命令Project>Edit Project或者Option>Development Mode,將開發(fā)模式設(shè)置為
; ”MPLAB ICD Debugger”,點(diǎn)擊OK按鈕,打開ICD的工作窗口,在調(diào)試階段,可以按照說明書圖2-10設(shè)置各項(xiàng),但需注意
; OSCILLATOR應(yīng)設(shè)置為XT方式,尤其需要說明的是,選中“Enable Debug Mode”(使能調(diào)試模式)選項(xiàng),在向目
; 標(biāo)單片機(jī)燒寫機(jī)器碼程序時(shí),會(huì)將調(diào)試臨控程序同時(shí)寫入單片機(jī)的指定程序存儲(chǔ)器區(qū)域,然后才允許用ICD方式調(diào)試。
; 7.電路設(shè)置:將演示板的S1全部拔到ON,S4全部拔到OFF,S13的第5、第6、第7全部拔到OFF ,LCD不要插在演示板上,
; 以使端口C只與8只發(fā)光二極管接通;將用于選擇頻率的插針跳線插到”XT OSC”位置上.
; 8.向目標(biāo)單片機(jī)燒寫目標(biāo)程序:用戶在點(diǎn)擊功能按鈕”Program”向目標(biāo)單片機(jī)燒寫機(jī)器碼程序時(shí),會(huì)等待一段時(shí)間,
; 并且在條狀的狀態(tài)信息欄中,出現(xiàn)提示信息。有一點(diǎn)需要引起注意,就是PIC16F87X單片機(jī)的FLASH程序存儲(chǔ)器的擦寫
; 周期是有限的,大約為1000次,應(yīng)盡量節(jié)省它的使用壽命。
; 9.運(yùn)行和調(diào)試用戶程序和用戶電路:在各項(xiàng)參數(shù)設(shè)置好后,將ICD的工作窗口最小化,利用前面講的”運(yùn)行及調(diào)試”中介
; 紹的幾種方法進(jìn)行調(diào)試.當(dāng)用自動(dòng)單步方式調(diào)試時(shí),建議臨時(shí)禁止廷時(shí)子程序發(fā)揮作用,具體的方法是,可在CALL DELAY指
; 令前添加一個(gè)分號(hào),并且重新匯編一次.為了學(xué)習(xí)目的,在調(diào)試過程中可以人為地加入一些軟件漏洞(BUG)或硬件故障,來模
; 仿單片機(jī)端口引腳的片內(nèi)或片外故障.
; 10.定型燒寫目標(biāo)單片機(jī);經(jīng)過多次重復(fù)上述步驟的反復(fù)修改和調(diào)試,使得程序和電路在聯(lián)機(jī)狀態(tài)完全正常,這時(shí)可以進(jìn)行
; 定型燒寫,即將ICD窗口中的”Enable Debug Mode”(使能調(diào)試模式)選項(xiàng)消除,不再將調(diào)試臨控程序?qū)懭雴纹瑱C(jī)中.
; 11.獨(dú)立運(yùn)行驗(yàn)收:上一步中的燒寫過程完成后,即可將ICD模塊和ICD仿真頭(或演示板)之間的6芯電纜斷開,讓單片機(jī)在
; 演示板獨(dú)立運(yùn)行,觀察實(shí)際效果.
;
;


3.
LED8位流水燈《霹靂燈》左移到第七位,再?gòu)牡谄呶挥乙频降谝晃?,再循環(huán)。(匯編,另一種循環(huán)方法,通過改變C端口各位的輸入輸出方向來點(diǎn)亮流水燈。)


;LED流水燈的另一種實(shí)現(xiàn)方法

;使用資源
;1、PORTC口,8個(gè)流水燈LED

;功能說明
;1、該程序首先把C口輸出全0,然后通過改變輸入輸出方向來電亮流水燈。
;2、先從最低位電亮,點(diǎn)亮到最高位后,又從最高位開始點(diǎn)亮到最低位,如此循環(huán)。
;3、通過改變DELAY延時(shí)時(shí)間的長(zhǎng)短可改變流水等點(diǎn)亮的速度。

;硬件連接
;1、DEMO實(shí)驗(yàn)板作以下設(shè)置 s1拔到ON。
;2、S4,S5全部拔到OFF LCD不要插在演示板上

;本實(shí)例原提供者:pic16論壇會(huì)員:學(xué)期班 ,在此鳴謝學(xué)前班同志共享本實(shí)例.
;由深圳市乾龍盛電子科技有限公司技術(shù)部鐘閨田(工程師)(論壇網(wǎng)名:zhongruntian)驗(yàn)正并加于整理、注釋.
;網(wǎng)站:PIC單片機(jī)學(xué)習(xí)網(wǎng)http://www.pic16.com 討論論壇:http://pic16.com/bbs/
;版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處,并不能去掉或改變文件中的說明文字。
;程序文件名“LED.ASM“

;源程序如下:
;LIST P=16F877A R=DEC
;OST 4MHZ
;DATE 2006.04.27
;***********************************
;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SPECIAL REGISTER
STATUS EQU 83H
RC EQU 07H
TRISC EQU 87H
AB0 EQU 20H
AB1 EQU 21H
AB2 EQU 22H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STATUS BIT
C EQU 0
DC EQU 1
Z EQU 2
RP0 EQU 5
RP1 EQU 6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PROGRAM ST
ORG 0000H ;復(fù)位地址
NOP ;放置一條MCD所需的空指令
ST
CLRF RC ;所有C口輸出為低,關(guān)閉所有顯示
BSF STATUS,5 ;選體1
LOOP MOVLW B'11111110' ;先點(diǎn)亮RC0
MOVWF TRISC
BCF STATUS,5 ;回到體0
MOVLW B'11111111' ;所有輸出為1,只要相應(yīng)的位被設(shè)置為輸出,即可點(diǎn)亮
MOVWF RC
CALL DELAY ;延時(shí)一段時(shí)間,保證LED的亮度
BSF STATUS,5
BSF STATUS,C
LOOP1 RLF TRISC,F ;點(diǎn)亮的位左移一位
CALL DELAY ;延時(shí)
BTFSC STATUS,C ;判斷是否點(diǎn)亮到了RC7 **********是btfsc,而非btfss*******************************
GOTO LOOP1 ;否,繼續(xù)左移0
MOVLW B'01111111' ;是,點(diǎn)亮RC7位
MOVWF TRISC
CALL DELAY
BSF STATUS,0
LOOP2 RRF TRISC ,F ;點(diǎn)亮的位右移一位
CALL DELAY
BTFSC STATUS,C ;是否點(diǎn)亮到最低位 **********是btfsc,而非btfss*******************************
GOTO LOOP2 ;否,繼續(xù)右移
GOTO LOOP ;是,重新開始新一輪循環(huán)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY 0.12S
DELAY
MOVLW 0FFH
MOVWF AB0

DELAY1 MOVLW 0DH
MOVWF AB1
DELAY2
MOVLW 0BH
MOVWF AB2
DELAY3
DECFSZ AB2,F
GOTO DELAY3
DECFSZ AB1,F
GOTO DELAY2
DECFSZ AB0,F
GOTO DELAY1
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END ;源程序結(jié)束

; 進(jìn)入該實(shí)戰(zhàn)演練的工序流程如下:
; 1.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的”記事本”
; 這個(gè)為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過有兩點(diǎn)需要注意,一是注釋前面的
; 分號(hào)”;”必須用西文半角輸入;二是必須用”.asm”擴(kuò)展名存儲(chǔ)到事先建立的一個(gè)專用子目錄下.
; 2.打開MPLAB集成開發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動(dòng)MPLAB
; 并進(jìn)入MPLAB的桌面.
; 3.創(chuàng)建項(xiàng)目:選用菜單File>New或Project>New Project,在事先建立的一個(gè)專用子目錄下創(chuàng)建一個(gè)新項(xiàng)目,將
; 用記事本創(chuàng)建的源文件加入到該項(xiàng)目中.
; 4.建立項(xiàng)目中的目標(biāo)文件:選擇菜單Project >Build All(項(xiàng)目>建立所有文件),MPLAB將自動(dòng)調(diào)用MPASM將項(xiàng)目
; 文件管理下的源文件(.asm)匯編成十六進(jìn)制的目標(biāo)文件(.hex).

4. LED8位流水燈《霹靂燈》左移到第七位,再?gòu)牡谄呶挥乙频降谝晃唬傺h(huán)。(匯編,第三種實(shí)現(xiàn)方式,利用左移的性質(zhì))

;改為一直循環(huán)左移
;************************************************
;**************************************************
__CONFIG 3F39H;設(shè)置配置位中振蕩方式為XT,其它全部禁止或關(guān)閉
;****************************************************
status equ 3h ;定義狀態(tài)寄存器地址
portc equ 7h ;定義端口C的數(shù)據(jù)寄存器地址
trisc equ 87h ;定義端口C的方向控制寄存器地址
flag equ 25h ;定義一個(gè)控制左移/右移的標(biāo)志寄存器
;***********************************************************
org 0000h ;定義程序存放區(qū)域的起始地址
nop ;放置一條ICD必須的空操用指令
bsf status,5 ;設(shè)置文件寄存器的體1
movlw 00h ;對(duì)端口C的方向控制碼00H先送W
movwf trisc ;再由W轉(zhuǎn)移到方向控制寄存器
bcf status,5 ;恢復(fù)到文件寄存器體0
movlw 01h ;將00000001B先送W
movwf portc ;再由W轉(zhuǎn)移到數(shù)據(jù)寄存器
call delay ;
bsf flag,0 ;將左右移標(biāo)志位置1,首先進(jìn)行左移LED
bcf status,0 ;將標(biāo)志位C先清0
loop
rlf portc,0 ;循環(huán)左移端口C數(shù)據(jù)寄存器,結(jié)果送W
movwf portc ;將結(jié)果再送回端口C的數(shù)據(jù)寄存器
call delay ;
goto loop ;跳過下面兩條指令

;-------------------------廷時(shí)子程序----------------------------
delay ;子程序名,也是子程序入口地址
movlw 0ffh ;將外層循環(huán)參數(shù)值FFH經(jīng)過W
movwf 20h ;送入用作外循環(huán)變量的20H單元
lp0 movlw 0ffh ;將內(nèi)層循環(huán)參數(shù)值FFH經(jīng)過W
movwf 21h ;送入用作內(nèi)循環(huán)變量的21H單元
lp1 decfsz 21h,1 ;變量21H內(nèi)容遞減,若為0跳躍
goto lp1 ;跳轉(zhuǎn)到LP1處
decfsz 20h,1 ;變量20H內(nèi)容遞減,若為0跳躍
goto lp0 ;跳躍到LP0處
return ;返回主程序
end ;源程序結(jié)束
;****************************************************************
; 進(jìn)入該實(shí)戰(zhàn)演練的工序流程如下:
; 1.軟硬件的安裝:按照本說明書前面講的”MPLAB-ICD的安裝和使用”一節(jié)內(nèi)介紹的方法操作即可.
; 2.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的”記事本”
; 這個(gè)為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過有兩點(diǎn)需要注意,一是注釋前面的
; 分號(hào)”;”必須用西文半角輸入;二是必須用”.asm”擴(kuò)展名存儲(chǔ)到事先建立的一個(gè)專用子目錄下.
; 3.打開MPLAB集成開發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動(dòng)MPLAB
; 并進(jìn)入MPLAB的桌面.
; 4.創(chuàng)建項(xiàng)目:選用菜單File>New或Project>New Project,在事先建立的一個(gè)專用子目錄下創(chuàng)建一個(gè)新項(xiàng)目,將
; 用記事本創(chuàng)建的源文件加入到該項(xiàng)目中.
; 5.建立項(xiàng)目中的目標(biāo)文件:選擇菜單Project >Build All(項(xiàng)目>建立所有文件),MPLAB將自動(dòng)調(diào)用MPASM將項(xiàng)目
; 文件管理下的源文件(.asm)匯編成十六進(jìn)制的目標(biāo)文件(.hex).
; 6.ICD參數(shù)設(shè)置:通過菜單命令Project>Edit Project或者Option>Development Mode,將開發(fā)模式設(shè)置為
; ”MPLAB ICD Debugger”,點(diǎn)擊OK按鈕,打開ICD的工作窗口,在調(diào)試階段,可以按照說明書圖2-10設(shè)置各項(xiàng),但需注意
; OSCILLATOR應(yīng)設(shè)置為XT方式,尤其需要說明的是,選中“Enable Debug Mode”(使能調(diào)試模式)選項(xiàng),在向目
; 標(biāo)單片機(jī)燒寫機(jī)器碼程序時(shí),會(huì)將調(diào)試臨控程序同時(shí)寫入單片機(jī)的指定程序存儲(chǔ)器區(qū)域,然后才允許用ICD方式調(diào)試。
; 7.電路設(shè)置:將演示板的S1全部拔到ON,S4全部拔到OFF,S13的第5、第6、第7全部拔到OFF ,LCD不要插在演示板上,
; 以使端口C只與8只發(fā)光二極管接通;將用于選擇頻率的插針跳線插到”XT OSC”位置上.
; 8.向目標(biāo)單片機(jī)燒寫目標(biāo)程序:用戶在點(diǎn)擊功能按鈕”Program”向目標(biāo)單片機(jī)燒寫機(jī)器碼程序時(shí),會(huì)等待一段時(shí)間,
; 并且在條狀的狀態(tài)信息欄中,出現(xiàn)提示信息。有一點(diǎn)需要引起注意,就是PIC16F87X單片機(jī)的FLASH程序存儲(chǔ)器的擦寫
; 周期是有限的,大約為1000次,應(yīng)盡量節(jié)省它的使用壽命。
; 9.運(yùn)行和調(diào)試用戶程序和用戶電路:在各項(xiàng)參數(shù)設(shè)置好后,將ICD的工作窗口最小化,利用前面講的”運(yùn)行及調(diào)試”中介
; 紹的幾種方法進(jìn)行調(diào)試.當(dāng)用自動(dòng)單步方式調(diào)試時(shí),建議臨時(shí)禁止廷時(shí)子程序發(fā)揮作用,具體的方法是,可在CALL DELAY指
; 令前添加一個(gè)分號(hào),并且重新匯編一次.為了學(xué)習(xí)目的,在調(diào)試過程中可以人為地加入一些軟件漏洞(BUG)或硬件故障,來模
; 仿單片機(jī)端口引腳的片內(nèi)或片外故障.
; 10.定型燒寫目標(biāo)單片機(jī);經(jīng)過多次重復(fù)上述步驟的反復(fù)修改和調(diào)試,使得程序和電路在聯(lián)機(jī)狀態(tài)完全正常,這時(shí)可以進(jìn)行
; 定型燒寫,即將ICD窗口中的”Enable Debug Mode”(使能調(diào)試模式)選項(xiàng)消除,不再將調(diào)試臨控程序?qū)懭雴纹瑱C(jī)中.
; 11.獨(dú)立運(yùn)行驗(yàn)收:上一步中的燒寫過程完成后,即可將ICD模塊和ICD仿真頭(或演示板)之間的6芯電纜斷開,讓單片機(jī)在
; 演示板獨(dú)立運(yùn)行,觀察實(shí)際效果.
;
;


5. LED8位流水燈《霹靂燈》左移到第七位,再?gòu)牡谄呶挥乙频降谝晃?,再循環(huán)。(C,第三種實(shí)現(xiàn)方式,利用左移的性質(zhì))

//實(shí)驗(yàn)?zāi)康模罕境绦蛑饕獙?shí)現(xiàn)一個(gè)簡(jiǎn)單的流水燈程序
//即輪流點(diǎn)亮C口的8個(gè)燈(先點(diǎn)亮RC0,再熄滅RCO點(diǎn)亮RC1。。。。)
//硬件要求:撥碼開關(guān)S11全部置ON。
#include //包含單片機(jī)內(nèi)部資源預(yù)定義
__CONFIG(0x1832);
//芯片配置字,看門狗關(guān),上電延時(shí)開,掉電檢測(cè)關(guān),低壓編程關(guān),加密,4M晶體HS振蕩

void delay(); //delay函數(shù)申明

void main() //主函數(shù)
{
while(1) //死循環(huán),讓C口流水燈一直工作
{
char i; //定義整型變量
TRISC=0X00; //C口定義為輸出
PORTC=0X01; //點(diǎn)亮RCO口LED
for(i=8;i>0;i--) //循環(huán)左移7次
{
delay();
delay(); //調(diào)用一定的延時(shí)程序,保證閃爍的速率
PORTC=PORTC<<1; //顯示左移一位(RC0-->RC7-->RC0)
}
}
}

void delay() //延時(shí)子程序
{
int i; //定義整型變量
for(i=5000;i>0;i--)
{;} //空函數(shù),什么也不執(zhí)行,只是消耗一定的時(shí)間
}

6.LED8位流水燈《霹靂燈》從0位開始左移,移到第七位時(shí)直接跳到零位,再左移,循環(huán)(匯編)

;改為從0位開始左移,移到第七位時(shí)直接跳到零位,再左移。

;**************************************************
__CONFIG 3F39H;設(shè)置配置位中振蕩方式為XT,其它全部禁止或關(guān)閉
;****************************************************
status equ 3h ;定義狀態(tài)寄存器地址
portc equ 7h ;定義端口C的數(shù)據(jù)寄存器地址
trisc equ 87h ;定義端口C的方向控制寄存器地址
flag equ 25h ;定義一個(gè)控制左移/右移的標(biāo)志寄存器
;***********************************************************
org 0000h ;定義程序存放區(qū)域的起始地址
nop ;放置一條ICD必須的空操用指令
bsf status,5 ;設(shè)置文件寄存器的體1
movlw 00h ;對(duì)端口C的方向控制碼00H先送W
movwf trisc ;再由W轉(zhuǎn)移到方向控制寄存器
bcf status,5 ;恢復(fù)到文件寄存器體0
loop2 movlw 01h ;將00000001B先送W
movwf portc ;再由W轉(zhuǎn)移到數(shù)據(jù)寄存器
call delay ;
bsf flag,0 ;將左右移標(biāo)志位置1,首先進(jìn)行左移LED
bcf status,0 ;將標(biāo)志位C先清0
loop btfss status,0 ;測(cè)試進(jìn)位/借位位,是1則修改標(biāo)志
goto loop1 ;是0則不修改標(biāo)志
comf flag,1 ;FLAG的BIT0作為標(biāo)志位,把它取反
loop1 btfss flag,0 ;判斷標(biāo)志位,是1則跳到循環(huán)左移
goto loop2 ;是0則跳回原處
rlf portc,0 ;循環(huán)左移端口C數(shù)據(jù)寄存器,結(jié)果送W
movwf portc ;將結(jié)果再送回端口C的數(shù)據(jù)寄存器
goto loop3 ;跳過下面兩條指令
loop3 call delay ;調(diào)用廷時(shí)子程序
goto loop ;返回
;-------------------------廷時(shí)子程序----------------------------
delay ;子程序名,也是子程序入口地址
movlw 0ffh ;將外層循環(huán)參數(shù)值FFH經(jīng)過W
movwf 20h ;送入用作外循環(huán)變量的20H單元
lp0 movlw 0ffh ;將內(nèi)層循環(huán)參數(shù)值FFH經(jīng)過W
movwf 21h ;送入用作內(nèi)循環(huán)變量的21H單元

lp1 decfsz 21h,1 ;變量21H內(nèi)容遞減,若為0跳躍
goto lp1 ;跳轉(zhuǎn)到LP1處
decfsz 20h,1 ;變量20H內(nèi)容遞減,若為0跳躍
goto lp0 ;跳躍到LP0處
return ;返回主程序
end ;源程序結(jié)束
;****************************************************************
; 進(jìn)入該實(shí)戰(zhàn)演練的工序流程如下:
; 1.軟硬件的安裝:按照本說明書前面講的”MPLAB-ICD的安裝和使用”一節(jié)內(nèi)介紹的方法操作即可.
; 2.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的”記事本”
; 這個(gè)為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過有兩點(diǎn)需要注意,一是注釋前面的
; 分號(hào)”;”必須用西文半角輸入;二是必須用”.asm”擴(kuò)展名存儲(chǔ)到事先建立的一個(gè)專用子目錄下.
; 3.打開MPLAB集成開發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動(dòng)MPLAB
; 并進(jìn)入MPLAB的桌面.
; 4.創(chuàng)建項(xiàng)目:選用菜單File>New或Project>New Project,在事先建立的一個(gè)專用子目錄下創(chuàng)建一個(gè)新項(xiàng)目,將
; 用記事本創(chuàng)建的源文件加入到該項(xiàng)目中.
; 5.建立項(xiàng)目中的目標(biāo)文件:選擇菜單Project >Build All(項(xiàng)目>建立所有文件),MPLAB將自動(dòng)調(diào)用MPASM將項(xiàng)目
; 文件管理下的源文件(.asm)匯編成十六進(jìn)制的目標(biāo)文件(.hex).
; 6.ICD參數(shù)設(shè)置:通過菜單命令Project>Edit Project或者Option>Development Mode,將開發(fā)模式設(shè)置為
; ”MPLAB ICD Debugger”,點(diǎn)擊OK按鈕,打開ICD的工作窗口,在調(diào)試階段,可以按照說明書圖2-10設(shè)置各項(xiàng),但需注意
; OSCILLATOR應(yīng)設(shè)置為XT方式,尤其需要說明的是,選中“Enable Debug Mode”(使能調(diào)試模式)選項(xiàng),在向目
; 標(biāo)單片機(jī)燒寫機(jī)器碼程序時(shí),會(huì)將調(diào)試臨控程序同時(shí)寫入單片機(jī)的指定程序存儲(chǔ)器區(qū)域,然后才允許用ICD方式調(diào)試。
; 7.電路設(shè)置:將演示板的S1全部拔到ON,S4全部拔到OFF,S13的第5、第6、第7全部拔到OFF ,LCD不要插在演示板上,
; 以使端口C只與8只發(fā)光二極管接通;將用于選擇頻率的插針跳線插到”XT OSC”位置上.
; 8.向目標(biāo)單片機(jī)燒寫目標(biāo)程序:用戶在點(diǎn)擊功能按鈕”Program”向目標(biāo)單片機(jī)燒寫機(jī)器碼程序時(shí),會(huì)等待一段時(shí)間,
; 并且在條狀的狀態(tài)信息欄中,出現(xiàn)提示信息。有一點(diǎn)需要引起注意,就是PIC16F87X單片機(jī)的FLASH程序存儲(chǔ)器的擦寫
; 周期是有限的,大約為1000次,應(yīng)盡量節(jié)省它的使用壽命。
; 9.運(yùn)行和調(diào)試用戶程序和用戶電路:在各項(xiàng)參數(shù)設(shè)置好后,將ICD的工作窗口最小化,利用前面講的”運(yùn)行及調(diào)試”中介
; 紹的幾種方法進(jìn)行調(diào)試.當(dāng)用自動(dòng)單步方式調(diào)試時(shí),建議臨時(shí)禁止廷時(shí)子程序發(fā)揮作用,具體的方法是,可在CALL DELAY指
; 令前添加一個(gè)分號(hào),并且重新匯編一次.為了學(xué)習(xí)目的,在調(diào)試過程中可以人為地加入一些軟件漏洞(BUG)或硬件故障,來模
; 仿單片機(jī)端口引腳的片內(nèi)或片外故障.
; 10.定型燒寫目標(biāo)單片機(jī);經(jīng)過多次重復(fù)上述步驟的反復(fù)修改和調(diào)試,使得程序和電路在聯(lián)機(jī)狀態(tài)完全正常,這時(shí)可以進(jìn)行
; 定型燒寫,即將ICD窗口中的”Enable Debug Mode”(使能調(diào)試模式)選項(xiàng)消除,不再將調(diào)試臨控程序?qū)懭雴纹瑱C(jī)中.
; 11.獨(dú)立運(yùn)行驗(yàn)收:上一步中的燒寫過程完成后,即可將ICD模塊和ICD仿真頭(或演示板)之間的6芯電纜斷開,讓單片機(jī)在
; 演示板獨(dú)立運(yùn)行,觀察實(shí)際效果.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉