全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5326
推到 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:我有把書看過 第一次看這程式想瞭其中的意思跟觀念
未知);----LED Output control to PORTD-------------(
利用clrf PORTDInitialize PORTD ------(;-----by clearing output data latch-----------(
(
;PIC
表逃檔或定義檔)org 0x00位址2進位)[0000 0000 ] 程式起始位址

MAIN: ;
清除STATUS,PRO位元) 選擇分頁0)bcf STATUS,RP1( bsc:位元清除(最右邊向左邊依序清bit)位元清為0
clrf PORTD(;Initialize PORTD by clearing(?

輸出資料栓鎖)
位元設定為1) 選擇分頁1)
(
(
未知)
把暫存器內的值移到ROM位址W-F關係,TRISD是暫存器) ;set PORTD as output 設定PORTD為輸出)
(
選擇分頁0)
把常數0x01存入暫存器[TRISD]K-W關係)
把暫存器內的值移到ROM位址W-F關係,PROTD是暫存器)
(


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