本帖最后由 BeHappy 于 2024-6-14 21:46 编辑
硬件环境:
MCU:STC8G1K08A-8PIN
仿真器:STC-USB LINK1D
实验目的:
从RAM中读取mcu中1.9v参考电压
问题描述:
从RAM读取BGV的值,然后由UART1打印出来,打印结果为04A4H(十进制的1188),这与下载程序的时候下载器打印的值一致。
但是,当我用仿真器(注释掉与UART1相关的代码)调试的时候,(累加器)读数为00A4H,很显然,BGV的高8位始终是00H。
使用的代码来自于STC-ISP下载器的例程,我只对UART1的波特率做了修改。以下是读取BGV时,高8位始终为00H的问题代码:
- AUXR DATA 8EH
- BGV DATA 0EFH
-
- BUSY BIT 20H.0
-
- P0M1 DATA 093H
- P0M0 DATA 094H
- P1M1 DATA 091H
- P1M0 DATA 092H
- P2M1 DATA 095H
- P2M0 DATA 096H
- P3M1 DATA 0B1H
- P3M0 DATA 0B2H
- P4M1 DATA 0B3H
- P4M0 DATA 0B4H
- P5M1 DATA 0C9H
- P5M0 DATA 0CAH
-
- ORG 0000H
- LJMP MAIN
- ORG 0023H
- LJMP UART_ISR
- ORG 0100H
-
- TIMER1CONF:
- ANL TMOD, #0FH
- MOV TL1, #8FH
- MOV TH1, #0FDH
- ; disable timer1 interrupt
- CLR ET1
- ; start timer1
- SETB TR1
- RET
-
- UART1INIT:
- ; 8-bit data width, enable REN
- MOV SCON, #50H
- ANL PCON, #NOT 0C0H
- ORL AUXR, #40H
- ; select timer1 as baud-rate generater
- ANL AUXR, #0FEH
- CALL TIMER1CONF
- CLR BUSY
- RET
-
- UART_ISR:
- PUSH ACC
- JNB TI, CHECKRI
- CLR TI
- CLR BUSY
- CHECKRI:
- JNB RI, UART1ISEND
- CLR RI
- UART1ISEND:
- POP ACC
- RETI
-
- DELAY500MS: ;@12.000MHz
- NOP
- PUSH 30H
- PUSH 31H
- PUSH 32H
- MOV 30H,#31
- MOV 31H,#113
- MOV 32H,#27
- NEXT:
- DJNZ 32H,NEXT
- DJNZ 31H,NEXT
- DJNZ 30H,NEXT
- POP 32H
- POP 31H
- POP 30H
- RET
-
- UART_SEND:
- JB BUSY,$
- SETB BUSY
- MOV SBUF,A
- RET
-
- MAIN:
- MOV SP, #9FH
- MOV P0M0, #00H
- MOV P0M1, #00H
- MOV P1M0, #00H
- MOV P1M1, #00H
- MOV P2M0, #00H
- MOV P2M1, #00H
- MOV P3M0, #00H
- MOV P3M1, #0FCH
- MOV P4M0, #00H
- MOV P4M1, #00H
- MOV P5M0, #00H
- MOV P5M1, #0FFH
-
- ;LCALL UART1INIT
- SETB ES
- SETB EA
-
- MAINLOOP:
- MOV R0, #BGV
- MOV A, @R0
- ;LCALL UART_SEND
-
- INC R0
- MOV A, @R0
- ;LCALL UART_SEND
-
- CALL DELAY500MS
- CALL DELAY500MS
- CALL DELAY500MS
- CALL DELAY500MS
-
- JMP MAINLOOP
-
- END
复制代码
有空的话,大家也可以复现一下
下载器打印的BGV值:
STC-USB Link1D版本号:
|