www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(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)牡谄呶挥乙频降谝晃唬傺h(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ū)嵗菔景鍟簳r(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)牡谄呶挥乙频降谝晃?,再循環(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)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉