標題:
為什么89C2051單片機P1每位輸出總是低電平 附匯編代碼
[打印本頁]
作者:
lwq1947
時間:
2022-1-5 16:22
標題:
為什么89C2051單片機P1每位輸出總是低電平 附匯編代碼
藍牙與51交叉連接,P1.0接1.5K上拉電阻。給藍牙發(fā)信息P1每位輸出總是低電平。懇請大家指教。程序如下;
ORG 0000H
SJIMP MAIN
ORG 0060H
MAIN:
MOV P1,#00H
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV PCON,#0
MOV SCON,#50H
SETB EA
SETB ES
SETB TR1
LOOP:
JNB RI,$
MOV P1.SBUF
CLR RI
JMP LOOP
END
END
作者:
冰火風輪
時間:
2022-1-5 17:08
是你設置的哈
MOV P1,#00H
作者:
lwq1947
時間:
2022-1-5 18:29
冰火風輪 發(fā)表于 2022-1-5 17:08
是你設置的哈
MOV P1,#00H
那是初始設置,之后應是LOOP循環(huán)中SBUF賦予的值呀。
作者:
188610329
時間:
2022-1-5 23:45
要么
SETB EA
SETB ES
這兩句去掉。
要么
CSEG AT 0023H
JBC RI,Run_INT
RETI
Run_INT:
MOV P1.SBUF
RETI
作者:
lwq1947
時間:
2022-1-6 13:13
188610329 發(fā)表于 2022-1-5 23:45
要么
SETB EA
SETB ES
首先感謝總工的回復解答,試過之后不成就開始懷疑是否自己哪里有問題。檢查硬件才發(fā)現(xiàn)自己犯了不該有的低級錯誤。原因是藍牙的TXD與51的RXD在線路板上連接處有虛焊,導制51根本收不到任何數(shù)據(jù)。原程序是沒問題的。我原先是用過中斷編程的。后來沒把那兩句去掉,應按總工的提示去作使程序更簡睫。
作者:
188610329
時間:
2022-1-8 13:16
源程序是有問題的,你開了es,就必須在0023寫中斷函數(shù),并且有reti返回,不然你只要發(fā)了串口數(shù)據(jù),就會PC入棧,而沒有PC出棧,堆棧溢出只是早晚的事,雖然你這個程序沒有用到r寄存器,也許溢出后繞個圈,還能接著溢出,但是這種寫法本來就是跑飛的寫法。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1