Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 1 decade ago

8051高手請幫我

我想知道下面這程式的註解 , 還有她的功能是什麼 ? 感謝 贈20點...

ORG 0000h

SJMP START

;

;Interrupt Vector Table

ORG 0003h

CALL INT0_ISR

RETI

ORG 000Bh

CALL T0_ISR

RETI

ORG 0013h

CALL INT1_ISR

RETI

ORG 001Bh

CALL T1_ISR

RETI

ORG 0023h

CALL UART_ISR

RETI

;

ORG 0030h

START:

; Initialization

;

; Task

;

DONE: SJMP DONE

;

INT0_ISR:

; Service Routine for External Interrupt 0

RET

T0_ISR:

; Service Routine for Timer 0 Interrupt

RET

INT1_ISR:

; Service Routine for External Interrupt 1

RET

T1_ISR:

; Service Routine for Timer 1 Interrupt

RET

UART_ISR:

; Service Routine for UART Interrupt

RET

;

END

Update:

IC型號是AT89C51 程式應該沒錯 因為是老師的網頁上的

3 Answers

Rating
  • 先生
    Lv 6
    1 decade ago
    Favorite Answer

    ORG 0000h --->告訴compiler後面程式從0000h開始編譯

    SJMP START --->在0000這裡存放的指令就是跳到名為START的地方開始執行

    ;

    ;Interrupt Vector Table --->註解:後面這些程式是一個中斷向量的表格

    ORG 0003h --->告訴compiler後面程式從0003h開始編譯

    CALL INT0_ISR --->如果發生INT0中斷則跳往INT0_ISR的中斷副程式

    RETI --->這一個RETI不應該存在它應該放在中斷副程式結束的地方

    ORG 000Bh --->告訴compiler後面程式從000Bh開始編譯

    CALL T0_ISR --->如果發生T0中斷則跳往T0_ISR的中斷副程式

    RETI --->這一個RETI不應該存在它應該放在中斷副程式結束的地方

    ORG 0013h --->告訴compiler後面程式從0013h開始編譯

    CALL INT1_ISR --->如果發生INT1中斷則跳往INT1_ISR的中斷副程式

    RETI --->這一個RETI不應該存在它應該放在中斷副程式結束的地方

    ORG 001Bh --->告訴compiler後面程式從0013h開始編譯

    CALL T1_ISR --->如果發生T1中斷則跳往T1_ISR的中斷副程式

    RETI --->這一個RETI不應該存在它應該放在中斷副程式結束的地方

    ORG 0023h --->告訴compiler後面程式從0013h開始編譯

    CALL UART_ISR --->如果發生uart通訊的中斷則跳往UART_ISR的中斷副程式

    RETI --->這一個RETI不應該存在它應該放在中斷副程式結束的地方

    ;

    2008-06-08 09:15:19 補充:

    ORG 0030h ---告訴compiler後面START程式從0030h開始編譯

    START:

    ; Initialization ---(主程式目前並沒有內容,後面這些都是註解而已)

    ;

    ; Task

    ;

    DONE: SJMP DONE

    ;

    2008-06-08 09:26:33 補充:

    INT0_ISR: --->(中斷程式目前並沒有內容,後面這些都是註解而已)

    ; Service Routine for External Interrupt 0

    RET --->這個RET應該有錯,正常的中斷結束應該用RETI

    2008-06-08 09:27:34 補充:

    T0_ISR: --->(中斷程式目前並沒有內容,後面這些都是註解而已)

    ; Service Routine for Timer 0 Interrupt

    RET --->這個RET應該有錯,正常的中斷結束應該用RETI

    2008-06-08 09:28:15 補充:

    INT1_ISR: --->(中斷程式目前並沒有內容,後面這些都是註解而已)

    ; Service Routine for External Interrupt 1

    RET --->這個RET應該有錯,正常的中斷結束應該用RETI

    2008-06-08 09:28:43 補充:

    T1_ISR: --->(中斷程式目前並沒有內容,後面這些都是註解而已)

    ; Service Routine for Timer 1 Interrupt

    RET --->這個RET應該有錯,正常的中斷結束應該用RETI

    2008-06-08 09:29:16 補充:

    UART_ISR: --->(中斷程式目前並沒有內容,後面這些都是註解而已)

    ; Service Routine for UART Interrupt

    RET --->這個RET應該有錯,正常的中斷結束應該用RETI

    2008-06-08 09:29:36 補充:

    END

    以上...這不能算是一個程式,它只是一個標準8051程式的框架,可以拿來套用,如同一個空白表格,真正的內容並還沒有被填入喔,而且中斷的結束必須是RETI而不是RET,至於中斷向量表的RETI是多餘的....

    Source(s): 我在大亞電梯從事控制系統研發..., 超過字數限制,第2次回文, yahoo真賤明明沒有多少字,都說我字數超過,一篇文章要分好幾次PO..., yahoo真賤明明沒有多少字,都說我字數超過,一篇文章要分好幾次PO..., yahoo真賤明明沒有多少字,都說我字數超過,一篇文章要分好幾次PO..., yahoo真賤明明沒有多少字,都說我字數超過,一篇文章要分好幾次PO..., yahoo真賤明明沒有多少字,都說我字數超過,一篇文章要分好幾次PO..., yahoo真賤明明沒有多少字,都說我字數超過,一篇文章要分好幾次PO...
  • Anonymous
    6 years ago

    【亞洲36588合法彩券公司直營 官網: A36588.NET 】

    【 最新活動→迎接新會員,首存狂送20% 】

    【運動→電子→對戰→現場→彩球 】

    【免費服務 →電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服 】

    【亞洲36588合法彩券公司直營 官網: A36588.NET 】

  • 1 decade ago

    ORG 0000h 這個是宣告 當作是告訴程式起點

    SJMP START S JUMP 查一下指令表 就知道 JUMP

    ;Interrupt Vector Table

    ORG 0003h 這個是宣告的意思 是中斷的起點

    CALL INT0_ISR中斷後 要去幹麻 要去CALL INT0_ISR這個程式

    RETI 結束 I 應該是開啟中斷

    ORG 000Bh同上

    CALL T0_ISR

    RETI

    ORG 0013h同上

    CALL INT1_ISR

    RETI

    ORG 001Bh同上

    CALL T1_ISR

    RETI

    ORG 0023h同上

    CALL UART_ISR

    RETI

    ;

    ORG 0030h程式直接宣告在16進位中的30H 第48行

    START: 開始程式的撰寫 上面那些算是整個IC的規劃

    感覺中間有一點空洞 應該有一些程式在裡面

    ; Initialization

    ;

    ; Task

    ;

    DONE: SJMP DONE

    DONE是段落也可以當作是作文的第二段 第三段

    ;

    INT0_ISR:這個關係到第五行我從字面上會感覺到是從START 跳到第五行 再從第五行跳到這裡 跳到這裡應該有做一些事情才RET回去

    ; Service Routine for External Interrupt 0

    RET

    T0_ISR:

    ; Service Routine for Timer 0 Interrupt

    RET

    INT1_ISR:

    ; Service Routine for External Interrupt 1

    RET

    T1_ISR:

    ; Service Routine for Timer 1 Interrupt

    RET

    UART_ISR:

    ; Service Routine for UART Interrupt

    RET

    ;

    END 結束

    PS 我只是隨便解答的 因為不知道IC型號 也不知道硬體 SO 從字面上的意思解的 我想應該還有一些程式沒PO吧

    Source(s): 我的大腦經驗 曾經鑽研過組合語言
Still have questions? Get your answers by asking now.