痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 5907|回復: 4

[問題求助] 89C51 的 ROM, 怎樣設定 INT1 的中斷服務入口呢

[複製鏈接]
發表於 2014-2-25 22:37:11 | 顯示全部樓層 |閱讀模式
本帖最後由 xiaolaba 於 2014-2-25 11:04 PM 編輯

這個是抄來的, 用89C51 作的 ICE, 沒有源碼, 這是俺搭起來的棚架, 但是不能動作.
確定燒錄是沒問題的, 因為有測試用 BLINK P1.0 和 P2.0 接LED都會閃, 是正常的.

89s51ICE

89s51ICE


據作者寫的資料,
MCU AT89C51 (俺用AT89S51 替代)
P3.3 / INT1 接 UART 的送來的資料
P3.5 / T1  送出資料给 UART
9600, N81
PC 端送出 0Xff, 0x00, 0x01, 並在時限內等待 ICE 的回應


它的 HEX 如下

  1. :020000000153AA
  2. :03000300021003E5
  3. :03000B0002100BD5
  4. :03001300021013C5
  5. :03001B0002101BB5
  6. :1000230002102383220200E9C0E074020200ED0003
  7. :10003300C0E074030200ED00C0E074040200ED00B0
  8. :10004300C0E074050200ED00C0E074060200ED009C
  9. :1000530075817053D0E775A8007E2B7D0190100049
  10. :10006300ED1126F0A30DDEF8907F8074007E13F06F
  11. :10007300A3DEFC907F907400F0A37410F0907F9245
  12. :100083007470F074FA907F93F0414C8E6E8F6F20F2
  13. :10009300B3FD7E47DEFE7F08A2B3137E2DDEFE0096
  14. :1000A300DFF6C3AF6FAE6E228E6E8F6FC2B57E2F3B
  15. :1000B300DEFE7F081392B57E2DDEFE00DFF6D2B59D
  16. :1000C3007E2FDEFEAF6FAE6E22046A0000000000DA
  17. :1000D300031200E938303531206D6F6E69746F7229
  18. :1000E3002056312E3200C0E07401C0A8C2AFC083D5
  19. :1000F300C082907F80F0A37400F0A3E5D0F0A3D07A
  20. :10010300E0F0A3D0E0F0A3D0E0F0A3D0E0F0A3E5CB
  21. :10011300F0F0A3718B907F80E0F8D0E0F9D0E0B8E5
  22. :10012300010524FD400119907F90F0A3E9F0A3E5B8
  23. :1001330081F0414C907F93118E40F9B4F70040F465
  24. :10014300F0A3118E40EEB46B0050E9F0A36009FEFA
  25. :10015300118E40E0F0A3DEF8118E40D8FD71782DAA
  26. :1001630070D2907F93E0FEA3E0CEA3B4FF0221A55B
  27. :10017300B4FE0221C3B4FD0221F1B4FC02414CB42C
  28. :10018300FB024173B4FA0241B6B4F90241ECB4F88C
  29. :1001930002612BB4F702613C74F0907F93F0740119
  30. :1001A3006154907F94741DF0A3FE7F00A882A983FD
  31. :1001B3009000CCEF930F88828983F0A3DEEE616019
  32. :1001C300A3E0F8A3E0F9A3E0FE907F94F0A3601C02
  33. :1001D300AA82AB8388828983B90003E68001E0A306
  34. :1001E300A882A9838A828B83F0A3DEE46160A3E003
  35. :1001F300F8A3E0F9A3EE24FD6047FEFFE0AA82AB7B
  36. :100203008388828983B90003F68001F0A3A882A9B9
  37. :10021300838A828B83A3DEE4907F96E0F8A3E0F9E0
  38. :10022300A3E0FEAA82AB8388828983B90003E680B8
  39. :1002330001E06E7010A3A882A9838A828B83A3DF57
  40. :10024300E07400800274016154907F807413FEA8EF
  41. :1002530082A983907F94F0A3AA82AB838882898347
  42. :10026300E0A3A882A9838A828B83F0A3DEEA61607C
  43. :10027300EE603EA3A3E05418F5F065D05418601166
  44. :10028300907F9D71A453D0E7E5F042D0907F9D719C
  45. :100293008B7880797F907F94E0FEA3E0A3AA82AB62
  46. :1002A3008388828983F0A3A882A9838A828B83DED1
  47. :1002B300EA414C907F92E0F581907F8871A4E0C081
  48. :1002C300E0A3E0C0E0907F85E0C0E0A3E0C0E0A34E
  49. :1002D300E0F5F0A3907F82E0F5D0A3E0C0E0A3E0D7
  50. :1002E300F583D082D0E0D0A822EE6032AA82AB831D
  51. :1002F300AC82AD838A828B83A3E0F8A3E0F9A3E009
  52. :10030300FFA3AA82AB8388828983E0F8EFF0E08CB5
  53. :10031300828D836F7008E8F0A31E1E1EDED2E58275
  54. :10032300246B907F94F06160E0F874E5F0A3E8F04B
  55. :10033300A37422F0127F956154E0F8A3A3E0F9744B
  56. :10034300F5F0A3E8F0A37422F0E9127F977400613B
  57. :1003530054F8907F947401F0A3E8F08000717864FE
  58. :10036300FF04F0907F94E02403FE907F93E011ABB1
  59. :10037300A3DEFA2137907F94E02402FE907F937FDF
  60. :1003830000E02FFFA3DEFA22E8F0A3E9F0A3EAF0EE
  61. :10039300A3EBF0A3ECF0A3EDF0A3EEF0A3EFF0A337
  62. :1003A30022E0F8A3E0F9A3E0FAA3E0FBA3E0FCA3B7
  63. :0A03B300E0FDA3E0FEA3E0FFA3229B
  64. :00005301AC
複製代碼
.
.
.
.
俺用這個工具, 看她反編譯的源碼, 好像沒有看到 INT1 VECTOR
http://www.8051projects.net/download-d11-8051-disassembler.html

反編譯結果是, P3.3 和 P3.5 好像都有程序, 但是看不到 INT1 VECTOR 指向這個 INT1 的服務
請教一下有經驗的大大, 是俺的反編譯結果不正確, 還是真的不能用的
原來買的 8051 ICE 運到祖國後沒有帶上, 所以現在沒有工具, 只能用猜的

.
.

RESET VECTOR

  1. ;===============================================================;
  2. ; Disassembled Using DIS8051   -  (C)1989 Data Sync Engineering ;
  3. ;===============================================================;
  4. ;
  5. ;
  6. ;
  7.         ORG        00000H
  8. ;
  9.         AJMP        L0053
  10. ;
  11. ;
  12.         ORG        00003H
  13. ;
  14.         LJMP        L1003
  15. ;
  16. ;
  17.         ORG        0000BH
  18. ;
  19.         LJMP        L100B
  20. ;
  21. ;
  22.         ORG        00013H
  23. ;
  24.         LJMP        L1013
  25. ;
  26. ;
  27.         ORG        0001BH
  28. ;
  29.         LJMP        L101B
  30. ;
  31. ;
  32.         ORG        00023H
  33. ;
  34.         LJMP        L1023
複製代碼
.
.
.
.
P3.3 routine and P3.5 routine

  1. L008E:        MOV        06EH,R6                ;; should be UART hand coded RxD rotuine
  2.         MOV        06FH,R7
  3. ;
  4. L0092:        JB        P3.3,L0092        ;; P3.3 / INT1 pin, wait for start bit
  5.         MOV        R6,#047H
  6. ;
  7. L0097:        DJNZ        R6,L0097
  8.         MOV        R7,#008H
  9. ;
  10. L009B:        MOV        C,P3.3                ;; roll in Carry bit to assemble 8 bits data
  11.         RRC        A
  12.         MOV        R6,#02DH
  13. ;
  14. L00A0:        DJNZ        R6,L00A0
  15.         NOP       
  16.         DJNZ        R7,L009B
  17.         CLR        C
  18.         MOV        R7,06FH
  19.         MOV        R6,06EH
  20.         RET       
  21. ;
  22. ;
  23. L00AB:        MOV        06EH,R6                ;; should be UART hand coded TxD rotuine
  24.         MOV        06FH,R7
  25.         CLR        P3.5                ;; send start bit
  26.         MOV        R6,#02FH
  27. ;
  28. L00B3:        DJNZ        R6,L00B3
  29.         MOV        R7,#008H
  30. ;
  31. L00B7:        RRC        A
  32.         MOV        P3.5,C                ;; roll out 8 bits data
  33.         MOV        R6,#02DH
  34. ;
  35. L00BC:        DJNZ        R6,L00BC
  36.         NOP       
  37.         DJNZ        R7,L00B7
  38.         SETB        P3.5                ;; send stop bit
  39.         MOV        R6,#02FH
  40. ;
  41. L00C5:        DJNZ        R6,L00C5
  42.         MOV        R7,06FH
  43.         MOV        R6,06EH
  44.         RET
複製代碼
發表於 2014-2-25 23:28:13 | 顯示全部樓層
外部INT 1 中斷向量是0013H,從您DISASSEMBLE程式看來,會跳到L1013開始執行。

 樓主| 發表於 2014-2-26 22:04:45 | 顯示全部樓層
ysc 發表於 2014-2-25 11:28 PM static/image/common/back.gif
外部INT 1 中斷向量是0013H,從您DISASSEMBLE程式看來,會跳到L1013開始執行。


看來要讀一下它的程序何時把中斷的JUMP寫到L1013.

因為好久沒用 8051, 已經忘記了用啥指令讀寫 L1013 的位置. 作者寫的簡單資料, 它是外部的 SRAM 地址, L1013 就是 MAPPING 到 0x1000 的 INT13, 用3 byte 的 JMP XXX

請教一下, 如果把 ROM 的數據搬到外部, 填寫資料到 0x1000 - 0x1013, 通常會是用甚麼指令呢
發表於 2014-2-27 09:55:47 | 顯示全部樓層
xiaolaba 發表於 2014-2-26 10:04 PM static/image/common/back.gif
看來要讀一下它的程序何時把中斷的JUMP寫到L1013.

因為好久沒用 8051, 已經忘記了用啥指令讀寫 L1013  ...

51讀出ROM 程式碼指令只有2個:
MOVC A,@A+DPTR
MOVC A,@A+PC

至於寫入外部RAM就是MOVX了,細節要看硬體如何接線。

 樓主| 發表於 2014-2-27 20:41:43 | 顯示全部樓層
ysc 發表於 2014-2-27 09:55 AM static/image/common/back.gif
51讀出ROM 程式碼指令只有2個:
MOVC A,@A+DPTR
MOVC A,@A+PC

謝謝你的提示

俺也剛接到作者的EMAIL回覆, 原來是高雄某大學的教授, 她回答說會幫俺看看這個是不是原來設計有遺漏的地方.

希望可以複製成功.
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-11-21 09:14 PM , Processed in 0.119662 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.