|
這個(gè)程序是為了測(cè)試51用寄存器傳遞數(shù)據(jù)。流程是給r0-----r7 兩個(gè)頁面賦值,然后串口發(fā)送頁面1 r0---r7的值。總是跑不起來,有的時(shí)候跑飛,有的時(shí)候死循環(huán)。以上程序 在子程序 SYSTEMSET: 的ret位置不返回。
無標(biāo)題.png (87.8 KB, 下載次數(shù): 34)
下載附件
2024-3-8 21:04 上傳
單片機(jī)匯編語言源程序如下:
- AUXR EQU 08EH //輔助寄存器
- T2H DATA 0D6H //定時(shí)器2高8位
- T2L DATA 0D7H //定時(shí)器2低8位
- P_SW1 EQU 0A2H //外設(shè)功能切換寄存器1
- S1_S0 EQU 40H //P_SW1.6
- S1_S1 EQU 80H //P_SW1.7
- BUSY BIT 20H.0 //忙標(biāo)志位
- ORG 0000H
- LJMP MAIN
- ORG 0030H
- //主程序 **************************************
- MAIN:
- LCALL SYSTEMSET
- LCALL UART_2
- D1:
- LCALL DDATA
- LJMP D1
- RET
- //主程序 **************************************
- UART_2:
- PUSH ACC
- // PUSH PSW
- CLR BUSY ;
- // CLR EA ;
- MOV SP,#3FH ;
- ANL P_SW1,#03FH ;S1_S0=0 S1_S1=0
- MOV SCON,#50H ;8位可變波特率
- ORL AUXR,#04H ;定時(shí)器2時(shí)鐘為Fosc,即1T
- ORL AUXR,#01H ;串口1選擇定時(shí)器2為波特率發(fā)生器 9600
- MOV T2L,#0E0H ;設(shè)定定時(shí)初值 9600
- MOV T2H,#0FEH ;設(shè)定定時(shí)初值
- ORL AUXR,#10H ;啟動(dòng)定時(shí)器2
- // SETB ES; //使能串口中斷
- // SETB EA;
- // POP PSW
- POP ACC
- RET
- SYSTEMSET:
- PUSH ACC
- MOV 00H,#0X01
- MOV 01H,#0X02
- MOV 02H,#0X03
- MOV 03H,#0X04
- MOV 04H,#0X05 ;寄存器 R0--R7 0頁面
- MOV 05H,#0X06
- MOV 06H,#0X07
- MOV 07H,#0X08
- MOV 08H,#0X09
- MOV 09H,#0X0A
- MOV 0AH,#0X0B
- MOV 0BH,#0X0C ;寄存器 R0--R7 1頁面
- MOV 0CH,#0X0D
- MOV 0DH,#0X0E
- MOV 0EH,#0X0F
- MOV 0FH,#0X11
- POP ACC
- RET
- DDATA:
- PUSH ACC
- PUSH PSW
- SETB PSW.3 ;將r0---r7 1頁面 8個(gè)值發(fā)送串口
- SETB BUSY;
- MOV A,R0
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- SETB BUSY;
- MOV A,R1
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- SETB BUSY;
- MOV A,R2
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- SETB BUSY;
- MOV A,R3
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- SETB BUSY;
- MOV A,R4
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- SETB BUSY;
- MOV A,R5
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- SETB BUSY;
- MOV A,R6
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- SETB BUSY;
- MOV A,R7
- MOV SBUF,A; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
- JNB TI,$;
- CLR TI;
- POP PSW
- POP ACC
- RET;
- end
復(fù)制代碼 |
|