??θ??N76E003?????HIRC?????????????UART?????
N76E003??HIRC????16 MHz?????????????1%???????????38400????baud rate??UART????????????16 MHz????????38400 Hz?????????baud rate????????????????
?????????????HIRC??????16.588 MHz??????????????baud rate??
- ????HIRC????????????
1. Trim value = RCTRIM0(HIRCTRIM[8:1]) + RCTRIM1(HIRCTRIM[0])??Trim value?C15???????HIRC??????16.6 MHz??
2. ???????д??RCTRIM0 ??RCTRIM1??д???HIRC????????????Ч??
3. ???????HIRC??????16 MHz?????????????дSFR??????HIRC??
4. ????16.588 MHz???????baud rate?????趨timer??????baud rate?????????baud rate??
- ?????????????
sfr RCTRIM0 = 0x84;
sfr RCTRIM1 = 0x85;
bit BIT_TMP;
#define set_IAPEN BIT_TMP = EA; EA=0; TA=0xAA; TA=0x55; CHPCON |= SET_BIT0; EA= BIT_TMP
#define set_IAPGO BIT_TMP = EA; EA = 0; TA = 0xAA; TA = 0x55; IAPTRG |= SET_BIT0; EA = BIT_TMP
#define clr_IAPEN BIT_TMP = EA; EA = 0; TA = 0xAA; TA = 0x55; CHPCON &= ~SET_BIT0; EA=BIT_TMP
unsigned char hircmap0,hircmap1;
unsigned int trimvalue16bit;
void MODIFY_HIRC_VLAUE(void)
{
set_IAPEN;
IAPAL = 0x30;
IAPAH = 0x00;
IAPCN = READ_UID;
set_IAPGO;
hircmap0 = IAPFD;
IAPAL = 0x31;
IAPAH = 0x00;
set_IAPGO;
hircmap1 = IAPFD;
clr_IAPEN;
trimvalue16bit = ((hircmap0<<1)+(hircmap1&0x01));
trimvalue16bit = trimvalue16bit - 15;
hircmap1 = trimvalue16bit&0x01;
hircmap0 = trimvalue16bit>>1;
TA=0XAA;
TA=0X55;
RCTRIM0 = hircmap0;
TA=0XAA;
TA=0X55;
RCTRIM1 = hircmap1;

????admin ?????????2018-03-09