線上訂房服務-台灣趴趴狗聯合訂房中心
網站公告 :


Delphi K.Top討論區 » 單晶片與數位電路討論區 » PIC程式碼的意思 晶片16F877 Microchip軟體撰寫
發表新文章
瀏覽次數:2957
推到 Plurk!
推到 Facebook!

PIC程式碼的意思 晶片16F877 Microchip軟體撰寫

缺席
dou
一般會員




發表:1
回覆:1
積分:0
註冊:2008-06-05

發送簡訊給我
#1 發表時間:2008-06-06 10:49:15 IP:59.113.xxx.xxx 訂閱

不好意思來請教各位

下列這段程式碼是Microchip MATLAB IDE撰寫的 目前不接任何硬體只有單純的監控及模擬.....

我先解說一下

黑色部份為程式碼
紅色部份為程式碼意思註解(有可能會不對)
藍色部份為程式意思,但我不太瞭解意思

我想請各位幫我看一下
:PS:我有把書看過  第一次看這程式想瞭其中的意思跟觀念
;----I/O Port Application--------------------    (未知)
;----LED Output control to PORTD-------------    (未知)
;----利用clrf PORTDInitialize PORTD ------    (未知)
;-----by clearing output data latch-----------    (未知)
 
list p=16f877      (目錄控制)                  ;PIC型號及標頭檔宣告
 
#include<p16f877.inc>   (表逃檔或定義檔)
org 0x00       (ROM位址2進位)[0000 00002 ]     ;程式起始位址
 
MAIN:                                            ;主程式
 
bcf STATUS,RP0    (清除STATUS,PRO位元)          ;Bank0  (選擇分頁0)
bcf STATUS,RP1    (清除STATUS,PR1位元)   bsc:位元清除(最右邊向左邊依序清bit)位元清為0
 
clrf PORTD     (清除PROTD)            ;Initialize PORTD by clearing  (?什麼清除PORTD)
; output data latch  (輸出資料栓鎖)
 
bsf STATUS,RP0   (bsf:位元設定為1)    ;select bank1  (選擇分頁1)
 
movlw 0x00    (把常數0x00存入暫存器K-W關係)   ;value used to initialize data (未知)
;direction   (未知)
 
movwf TRISD     (把暫存器內的值移到ROM位址W-F關係,TRISD是暫存器)
;set PORTD as output (設定PORTD為輸出)
 
bcf STATUS,RP0     (清除STATUS,PR0位元)                   ;select bank0  (選擇分頁0)
 
movlw 0x01         (把常數0x01存入暫存器[TRISD]K-W關係)
 
movwf PORTD       (把暫存器內的值移到ROM位址W-F關係,PROTD是暫存器)
 
end               (程式結束)
 


sansam
高階會員




發表:4
回覆:141
積分:164
註冊:2007-08-20

發送簡訊給我
#2 發表時間:2008-06-06 10:55:25 IP:125.230.xxx.xxx 訂閱

那是設定PORT的程序
TRISD是設定PORTD輸出入方向
如TRISD為0時 是為輸出     為1時  是為輸入

movwf  PORTD             =>是把工作站存器W的內容丟給PORTD作為輸出狀態

CC5X語法如下:
TRISD=0x00;                             ; 設定PORTD為輸出
PORTD=0b11000011;            ; 1為hight   0為low
PORTD.6=0;                              ; 設定PORTD第六腳為Low

我的部落格整理好後將會有完整的CC5X語法說明,請參觀
http://tw.myblog.yahoo.com/jw!AAYcxeeBERmYSYUKUEqzAgU-/

一般C語言是不用考慮換bank的步驟
編譯時會自動切換

其它如CCSC等語法,可以參考
一開始學組合語言會建立很好觀念,不過很累

編輯記錄
sansam 重新編輯於 2008-06-06 11:01:45, 註解 無‧
sansam 重新編輯於 2008-06-06 11:05:33, 註解 無‧
sansam 重新編輯於 2008-06-06 13:45:19, 註解 無‧

kagaya
中階會員




發表:74
回覆:175
積分:59
註冊:2002-12-28

發送簡訊給我
#3 發表時間:2008-06-06 14:33:34 IP:211.21.xxx.xxx 訂閱

 
;----I/O Port Application--------------------    (未知)
;----LED Output control to PORTD-------------    (未知)
;----利用clrf PORTD來Initialize PORTD ------    (未知)
;-----by clearing output data latch-----------    (未知)

;後面接的是註解
 
bcf STATUS,RP0    (清除STATUS,PRO位元)          ;Bank0  (選擇分頁0)
bcf STATUS,RP1    (清除STATUS,PR1位元)   bsc:位元清除(最右邊向左邊依序清bit)位元清為0

這兩個指令就等同於 banksel PORTD
 
 
movlw 0x00    (把常數0x00存入暫存器K-W關係)   ;value used to initialize data (未知)
movwf TRISD     (把暫存器內的值移到ROM位址W-F關係,TRISD是暫存器)

讓PORTD都是Output
 
movlw 0x01         (把常數0x01存入暫存器[TRISD]K-W關係)
movwf PORTD       (把暫存器內的值移到ROM位址W-F關係,PROTD是暫存器)
 
點亮位於RD0的LED
 



------
KUSO 無處不在

編輯記錄
kagaya 重新編輯於 2008-06-06 14:34:43, 註解 無‧

dou
一般會員




發表:1
回覆:1
積分:0
註冊:2008-06-05

發送簡訊給我
#4 發表時間:2008-06-06 22:46:03 IP:59.113.xxx.xxx 訂閱

不好意思兩位大大

我發的帖是想請教我寫的註解內容意思是不是對的

我把它翻成中文的

但是我第一次看到此程式  有些不瞭解..

藍色部份是不確定或不清處
紅色部份是依書上及我自己理解寫的(書上沒有此程式碼)

我是看書上指令拼揍的

^^"

麻煩囉....

編輯記錄
dou 重新編輯於 2008-06-06 22:46:48, 註解 無‧

系統時間:2014-08-30 06:08:03,  線上使用者 59 / Max 338,主題數:97,363,回覆數:219,503。  聯絡我們 | Delphi.KTop討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!
5151線上健康照護網 | 台灣西醫網 | 台灣中醫網 | 台灣牙科網 | 台灣照護網 | 趴趴狗旅遊網
大花蓮旅遊網 | 大花蓮民宿網 | 花蓮旅遊網 | 花蓮旅遊 | 花蓮旅遊 | 花蓮住宿
花蓮民宿網 | 花蓮旅遊 | 花蓮住宿 | 花蓮民宿 | 花蓮旅遊 | 花蓮民宿
花蓮住宿 | 大南投旅遊網 | 大南投民宿網 | 日月潭風景區 | 日月潭旅遊網 | 日月潭民宿網
日月潭住宿網 | 宜蘭旅遊網 | 宜蘭民宿網 | 宜蘭住宿網 | 宜蘭旅遊網 | 宜蘭民宿網
宜蘭住宿網 | 宜蘭旅遊網 | 宜蘭民宿網 | 宜蘭住宿網 | 台東旅遊網 | 台東民宿網
台東住宿網 | 台東旅遊網 | 台東民宿網 | 台東住宿網 | 台東旅遊 | 台東民宿
台東住宿 | 綠島旅遊網 | 綠島民宿網 | 綠島住宿網 | 綠島旅遊網 | 綠島民宿網
綠島住宿網 | 綠島旅遊網 | 綠島民宿網 | 綠島住宿網 | 集集旅遊網 | 集集民宿網
集集住宿網 | 關子嶺旅遊網 | 關子嶺民宿網 | 白河旅遊網 | 白河民宿網 | 心脈大師
尊榮牙醫診所 |