線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3681
推到 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--------------------    (未知)

</span></font>
;----LED Output control to PORTD-------------    (未知)

</span></font>
;----利用clrf PORTDInitialize PORTD ------    (未知)

</span></span></font>
;-----by clearing output data latch-----------    (未知)

</span></span></font>

 

</span>
list p=<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="16" unitname="F">16f</chmetcnv>877      (目錄控制)                  ;PIC型號及標頭檔宣告

</span></span></font>

 

</span>
#include<p<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="16" unitname="F">16f</chmetcnv>877.inc>   (表逃檔或定義檔)

</span></font>
org 0x00       (ROM位址2進位)[0000 0000<sub>2</sub> ]     ;程式起始位址

</span></span></font>

 

</span>
MAIN:                                            ;主程式

</span></span></font>

 

</span>
bcf STATUS,RP0    (清除STATUS,PRO位元)          ;Bank0  (選擇分頁0)

</span></font>
bcf STATUS,RP1    (清除STATUS,PR1位元)   bsc:位元清除(最右邊向左邊依序清bit)位元清為0

</span></span></font>

 

</span>
clrf PORTD     (清除PROTD)            ;Initialize PORTD by clearing  (?什麼清除PORTD)

</span></font>
; output data latch  (輸出資料栓鎖)

</span></font>

 

</span>
bsf STATUS,RP0   (bsf:位元設定為1)    ;select bank1  (選擇分頁1)

</span></font>

 

</span>
movlw 0x00    (把常數0x00存入暫存器K-W關係)   ;value used to initialize data (未知)

</span></font>
;direction   (未知)

</span></font>

 

</span>
movwf TRISD     (把暫存器內的值移到ROM位址W-F關係,TRISD是暫存器)

</span></font>
;set PORTD as output (設定PORTD為輸出)

</span></font>

 

</span>
bcf STATUS,RP0     (清除STATUS,PR0位元)                   ;select bank0  (選擇分頁0)

</span></font>

 

</span>
movlw 0x01         (把常數0x01存入暫存器[TRISD]K-W關係)

</span></font>

 

</span>
movwf PORTD       (把暫存器內的值移到ROM位址W-F關係,PROTD是暫存器)

</span></font>

 

</span>
end               (程式結束)

</span>
 
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
 



</span>
</font>
------
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, 註解 無‧
系統時間:2016-05-04 02:09:52,  線上使用者 286 / Max 915,主題數:100,202,回覆數:222,124。 
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!