[讨论]想和單片機高手一起討論下這個簡單串口中斷程序是否能工作~
我編寫了一個串口中斷匯編程序,不復雜,調試也沒有出現問題,但是就是工作不了,我想和大家討論下究竟是什么錯誤導致它運行出錯~請大家幫忙...T2CON EQU 0C8H
T2MOD EQU 0C9H
TR2 BIT T2CON.2
RCAP2L EQU 0CAH
RCAP2H EQU 0CBH
TH2 EQU 0CDH
TL2 EQU 0CCH
ET2 BIT IE.5 ;以上為定義
ORG 0000H ;MAIN入口地址
LJMP MAIN
ORG 0023H ;串口中斷地址
LJMP CHECKIT
ORG 30H
MAIN:
MOV SCON,#01010000B ;串口工作在方式1,允許串口接受(REN=1)
MOV R0,#10H
MOV T2CON,#00010100B
MOV T2MOD,#00000000B
MOV RCAP2H,#0FFH
MOV RCAP2L,#0D9H
MOV TH2,RCAP2H
MOV TL2,RCAP2L ;以上為利用T2作為串口波特率發生器的設置,波特率為9600
SETB EA ;開總中斷
SETB ES ;開串口中斷
SJMP $ ;循環等待
ORG 100H
CHECKIT: ;串口中斷轉入的中斷子程序
JNB RI,$ ;查詢接收完畢沒有,當RI=1時向下執行
CLR RI ;清除RI(接收中斷標志位)
SJMP SEND ;轉入到發送子程序
SEND:
MOV SBUF,R0 ;把R0=10H由串口發送出去
JNB TI,$ ;等待發送完成
CLR TI ;清除發送中斷標志位
SJMP SEND ;轉回到SAND子程序繼續執行,目的是不斷地從串口輸出數據
END ;結束
以上就是我的程序和注解,調試方面已經通過,燒到單片機里面發現,當我從用串口調試軟件從串口輸出一個數后,單片機進入不了中斷子程序CHECKIT,因為我嘗試在子程序中加上一個CPL P1.2發現P1.2腳的電壓沒有改變,這到底是什么回事,大家有沒有看出我的程序到底哪里漏了什么或者錯了什么,請告訴我謝謝!@!!!!
[此贴子已经被作者于2007-1-7 20:47:46编辑过]