全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2547
推到 Plurk!
推到 Facebook!

新手看不懂8051程式碼>"<!

答題得分者是:penguin5
jocky2001
一般會員


發表:3
回覆:5
積分:1
註冊:2005-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-31 20:08:51 IP:218.166.xxx.xxx 未訂閱
這是LCD英文字幕機 的程式碼 一些註解地方不知道正不正確  何不懂地方希望有大大能解答>"<    
; PELC.ASM   IO51 LCD 16 MESSAGE
; ASM: KEIL
;-------------------------------
; LCD .....
RS      EQU P0.0             :定義LCD的RS接腳
EN      EQU P0.1             :定義LCD的EN接腳    SPK     EQU P3.4             :定義LCD的SPK接腳
WLED    EQU P3.7             :定義LCD的WLED接腳    FKEY    EQU 20H.0  ; KEY PRESSED  :這邊不知如何註解
KEY_NO  EQU 30H  ; KEY NO        :這邊不知如何註解    ;-----------------------------
        ORG 0H            :起始位址為0H
        JMP BEGIN         :跳至BEGIN處重新開始
;-----------------------------
BEGIN:
        CLR EN   ; LCD OFF   :這邊不知如何註解
        CALL LED_BL          :這邊不知如何註解
        CALL SET_LCD         :呼叫LCD作業模式
        CALL BZ              :這邊不知如何註解
        CALL BZ              :這邊不知如何註解            JMP RUN              :跳至RUN處重新開始
:..........................................
SET_LCD:          :設定LCD作業模式
        CLR  EN ;  en=0    :這邊不知如何註解
        CALL INIT_LCD      :呼叫LCD之規劃程式            MOV R5,#10        :延時0.1秒鐘
        CALL DELAY            MOV DPTR,#LMESS1     :LMESS1移至資料指標
        MOV A,#1        ; LINE1  :這邊不知如何註解
        CALL LCD_PRINT        :這邊不知如何註解            MOV DPTR,#LMESS2     :LMESS2移至資料指標
        MOV A,#2        ; LINE2   :這邊不知如何註解
        CALL LCD_PRINT        :這邊不知如何註解
        RET
;---------------------------------
INIT_LCD1:           :這個區域不知如何解釋
        MOV A,#28H
        CALL WCOM
        MOV A,#0CH
        CALL WCOM
        MOV A,#0EH
        CALL WCOM
        MOV A,#01H
        CALL WCOM
        RET
;---------------------------------
CLR_LINE1:        :這個區域不知如何解釋
        MOV A,#80H
        CALL WCOM
        MOV R0,#24
CL:     MOV A,#' '
        CALL WDATA
        DJNZ R0,CL
        RET
;-------------------------------
; A=LINE 1 OR 2       :這個區域不知如何解釋
; DPTR = MESSAGE POINTER
LCD_PRINT:
        CJNE A,#1,LINE2
LINE1:  MOV A,#80H
        CALL WCOM
        CALL CLR_LINE
        MOV A,#80H
        CALL WCOM
        JMP FILL
希望各位大大能為小弟我解答^^"
penguin5
資深會員


發表:116
回覆:317
積分:431
註冊:2004-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-31 21:37:03 IP:220.139.xxx.xxx 未訂閱
; PELC.ASM   IO51 LCD 16 MESSAGE
; ASM: KEIL
;-------------------------------
; LCD .....
RS      EQU P0.0             :定義LCD的RS接腳
EN      EQU P0.1             :定義LCD的EN接腳    SPK     EQU P3.4             :壓電蜂鳴器的接腳定義
WLED    EQU P3.7             :工作指示燈的接腳定義    FKEY    EQU 20H.0  ; KEY PRESSED  :應該是按鍵接腳定義(程式沒有全部貼出)
KEY_NO  EQU 30H  ; KEY NO         :應該是按鍵接腳定義(程式沒有全部貼出)    ;-----------------------------
        ORG 0H            :程式碼由位置0開始
        JMP BEGIN         :跳至BEGIN處開始執行程式
;-----------------------------
BEGIN:
        CLR EN    ; LCD OFF   :關閉LCD致能
        CALL LED_BL          :LED閃動 表示程式開始執行
        CALL SET_LCD         :LCD初始化,並顯示
        CALL BZ              :壓電蜂鳴器發出聱音
        CALL BZ              :壓電蜂鳴器發出聱音            JMP RUN              :跳至RUN處執行程式
:..........................................
SET_LCD:          :設定LCD作業模式
        CLR  EN ;  en=0    :關閉LCD致能            CALL INIT_LCD      :呼叫LCD之初始程式            MOV R5,#10        :延時0.1秒鐘
        CALL DELAY            MOV DPTR,#LMESS1     :LMESS1移至資料指標
        MOV A,#1        ; LINE1  :顯示在LCD第一行
        CALL LCD_PRINT        :顯示訊息1(LMESS1)於LCD第一行
        MOV DPTR,#LMESS2     :LMESS2移至資料指標
        MOV A,#2        ; LINE2   :顯示在LCD第二行
        CALL LCD_PRINT        :顯示訊息2(LMESS2)於LCD第二行
        RET
;---------------------------------
INIT_LCD1:           :I/O初始化LCD
        MOV A,#28H  雙列顯示,字型為5X7
        CALL WCOM     寫資料到 IR 暫存器
        MOV A,#0CH  游標出現,不閃爍 
        CALL WCOM   寫資料到 IR 暫存器 
        MOV A,#0EH   每次向右移一位,顯示幕不移動
        CALL WCOM   寫資料到 IR 暫存器 
        MOV A,#01H  清除LCD顯示幕
        CALL WCOM  寫資料到 IR 暫存器  
        RET
;---------------------------------
CLR_LINE1:          :清除LCD的第一行字元
        MOV A,#80H   設定第一行位置
        CALL WCOM    寫資料到 IR 暫存器            MOV R0,#24   共作24次
CL:     MOV A,#' '   載入空白字元至LCD
        CALL WDATA      寫資料到 DR 暫存器,輸出空白字元至LCD
        DJNZ R0,CL   是否已作 24次 
        RET
;-------------------------------
; A=LINE 1 OR 2       :  在LCD的第一行或第二行印出字元
; DPTR = MESSAGE POINTER 欲顯示字串之資料放置處     LCD_PRINT:             
        CJNE A,#1,LINE2  假如A,不是1,就跳到LINE2    
LINE1:  MOV A,#80H     在LCD的第一行印出字元
  
        CALL WCOM     寫資料到 IR 暫存器
 
        CALL CLR_LINE    清除一行之顯示
        MOV A,#80H     LCD的第一行
        CALL WCOM     寫資料到 IR 暫存器,輸出字元至LCD 
        JMP FILL      跳到FILL處執行程式  
歡迎參觀 麗嘉研究室 http://myweb.hinet.net/home4/penguin5/ 發表人 - penguin5 於 2005/05/31 22:13:27
系統時間:2024-05-15 18:40:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!