多謝回復. 我又試了一遍, 好像還是不行, 奇怪是我的代碼不對, 還是下載的配置不對? 還是這個芯片版本的差異?
下載配置能否往下拉一點截個屏看看完整的? 還有芯片版本是多少? 我這個是7.3.12U, 這個是比較近期的版本
測試代碼
- #include "stc8.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- static const char hexTable[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
- void timer_init()
- {
- // [ BAH,0,0x00]: 外設端口切換寄存器2
- P_SW2 = 0x80;
- // [ D6H,0,0x00]: 定時器2高字節
- T2H = 0xFF;
- // [ D7H,0,0x00]: 定時器2低字節
- T2L = 0xD0;
- // [ BAH,0,0x00]: 外設端口切換寄存器2
- P_SW2 = 0x00;
- // [ 87H,0,0x30]: 電源控制寄存器
- PCON = 0xB0;
- // [ 8EH,0,0x01]: 輔助寄存器
- AUXR = 0x15;
- }
- void uart_init()
- {
- // [ 98H,0,0x00]: 串口1控制寄存器
- SCON = 0x50;
- // [ 87H,0,0x30]: 電源控制寄存器
- PCON = 0xB0;
- // [ 8EH,0,0x01]: 輔助寄存器
- AUXR = 0x15;
- }
- void PrintString(u8 *str)
- {
- while (*str != '\0')
- {
- SBUF = *str;
- while(!TI);
- TI = 0; /* clear */
- str++;
- }
- }
- void PrintChar(u8 dat)
- {
- SBUF = dat;
- while(!TI);
- TI = 0;
- }
- void PrintHex(u8 hex)
- {
- PrintChar(hexTable[hex >> 4]);
- PrintChar(hexTable[hex & 0xF]);
- }
- void Delay1000ms() //@22.1184MHz
- {
- unsigned char i, j, k;
- i = 113;
- j = 53;
- k = 228;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void main(void)
- {
- unsigned char i, t1, t2, t3, t4;
- unsigned int pos;
- t1 = (char code *)0xFDF3;
- t2 = (char code *)0xFDF4;
- t3 = (char code *)0xFDF5;
- t4 = (char code *)0xFDF7;
- P0M1 = 0x00; P0M0 = 0x00; //設置為準雙向口
- P1M1 = 0x00; P1M0 = 0x00; //設置為準雙向口
- P2M1 = 0x00; P2M0 = 0x00; //設置為準雙向口
- P3M1 = 0x00; P3M0 = 0x00; //設置為準雙向口
- P4M1 = 0x00; P4M0 = 0x00; //設置為準雙向口
- P5M1 = 0x00; P5M0 = 0x00; //設置為準雙向口
- P6M1 = 0x00; P6M0 = 0x00; //設置為準雙向口
- P7M1 = 0x00; P7M0 = 0x00; //設置為準雙向口
- timer_init();
- uart_init();
- while(1)
- {
- PrintHex(IRTRIM);
- PrintChar(0x20);
- PrintHex(t1);
- PrintChar(0x20);
- PrintHex(t2);
- PrintChar(0x20);
- PrintHex(t3);
- PrintChar(0x20);
- PrintHex(t4);
- PrintChar(0x20);
- pos = 0xFDF3;
- for(i = 0; i < 13; i++)
- {
- PrintHex((char code *)pos);
- pos++;
- }
- PrintChar(0x20);
- PrintString("\r\n");
- Delay1000ms();
- }
- }
復制代碼
燒錄的日志
- Current H/W Option:
- . ISP-IRC frequency: 24.110MHz
- . IRC frequency: 22.124MHz
- . Wakeup Timer frequency: 34.250KHz
- . Oscillator gain is HIGH
- . Do not detect the level of P3.2 and P3.3 next download
- . Power-on reset, use the extra power-on delay
- . RESET pin behaves as IO pin
- . Reset while detect a Low-Voltage
- . Thresh voltage level of the built-in LVD : 2.20 V
- . Hardware do not enable Watch-Dog-Timer
- . Watch-Dog-Timer pre-scalar : 256
- . Watch-Dog-Timer stop count in idle mode
- . Program can modify the Watch-Dog-Timer scalar
- . Erase user EEPROM area at next download
- . Do not control 485 at next download
- . Do not check user password next download
- . TXD is independent IO
- . TXD pin as quasi-bidirectional mode after reset
- . P2.0 output HIGH level after reset
- . Reference voltage: 1341 mV (Range: 1270~1410mV)
- . Testing time: 2021-4-23
- MCU type: STC8A8K64S4A12
- F/W version: 7.3.12U
- Adjusting frequency ... [0.688"]
- Adjusted frequency: 22.124MHz (0.027%)
- Re-handshaking ... Successful [0.125"]
- Current Baudrate: 115200
- Erasing MCU flash ... OK ! [1.266"]
- MCU ID : F628C57D0BC117
- Programming user code ... OK ! [0.156"]
- Programming OPTIONS ... OK ! [0.032"]
- H/W Option upgrade to:
- . ISP-IRC frequency: 24.110MHz
- . IRC frequency: 22.124MHz
- . Wakeup Timer frequency: 34.250KHz
- . Oscillator gain is HIGH
- . Do not detect the level of P3.2 and P3.3 next download
- . Power-on reset, use the extra power-on delay
- . RESET pin behaves as IO pin
- . Reset while detect a Low-Voltage
- . Thresh voltage level of the built-in LVD : 2.20 V
- . Hardware do not enable Watch-Dog-Timer
- . Watch-Dog-Timer pre-scalar : 256
- . Watch-Dog-Timer stop count in idle mode
- . Program can modify the Watch-Dog-Timer scalar
- . Erase user EEPROM area at next download
- . Do not control 485 at next download
- . Do not check user password next download
- . TXD is independent IO
- . TXD pin as quasi-bidirectional mode after reset
- . P2.0 output HIGH level after reset
- . Reference voltage: 1341 mV (Range: 1270~1410mV)
- . Testing time: 2021-4-23
- MCU ID : F628C57D0BC117
- MCU type: STC8A8K64S4A12
- F/W version: 7.3.12U
- . Set frequency: 22.118MHz
- . Adjusted frequency: 22.124MHz
- . Trim error: 0.027%
- Complete !(2021-11-09 11:10:00)
復制代碼
輸出: 這里5B是從IRTRIM里讀取的正確的值, 后面輸出的都有問題
- 5B F3 F4 F5 F7 F3F4F5F6F7F8F9FAFBFCFDFEFF
- 5B F3 F4 F5 F7 F3F4F5F6F7F8F9FAFBFCFDFEFF
- 5B F3 F4 F5 F7 F3F4F5F6F7F8F9FAFBFCFDFEFF
- 5B F3 F4 F5 F7 F3F4F5F6F7F8F9FAFBFCFDFEFF
- 5B F3 F4 F5 F7 F3F4F5F6F7F8F9FAFBFCFDFEFF
- 5B F3 F4 F5 F7 F3F4F5F6F7F8F9FAFBFCFDFEFF
復制代碼
|