???????????????????????????????????????
?????3?????16λ?????????????????????????????????????T3PS[2:0] (T3CON[2:0])???????????д?????????R3H ??R3L??????????????????????????????????TR3 (T3CON.3)????????????????????FFFFH??TF3 (T3CON.4)???1????R3H ??R3L???????????????????16λ???????????ET3 (EIE1.1)???1???????3?ж?????????С????????ж???????TF3????????????
?????3???????????????????????????????????ο????13.5“??????”
???????????TR3 (T3CON.3)????????????????????
FFFFH??TF3 (T3CON.4)???1????R3H ??R3L???????????????????16λ????????
???ET3 (EIE1.1)???1???????3?ж?????????С????????ж???????TF3????????????
?????3???????????????????????????????????ο????13.5“??????”
??????
????????????????????????????????????????? 13–3. ?????趨???????????
????1????3??????0????????????????BRCK (T3CON.5)??????1?????3?????????1????в???????3???Ψ?????????
??????????1??????????????????????????1?ж???????1???????????????????????????????????????????????У??????????????????????????????????????2???????????????3??????????????????????????????3?ж??
???????????
#ifdef FOSC_160000 RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ #endif #ifdef FOSC_166000 RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ #endif
#include "N76E003.h" #include "SFR_Macro.h" #include "Function_define.h" #include "Common.h" #include "Delay.h" #define RELOAD_VALUE_H (65536-1500)/256 #define RELOAD_VALUE_L (65536-1500)%256 /************************************************************************************************************ * TIMER 2 interrupt subroutine ************************************************************************************************************/ void Timer3_ISR (void) interrupt 16 { clr_TF3; P12 = ~P12; //P0.2 toggle when TF3 interrupt printf("\n TM3 INT 0x%bX", RH3); } /************************************************************************************************************ * Main function ************************************************************************************************************/ void main (void) { Set_All_GPIO_Quasi_Mode; InitialUART0_Timer1(115200); RH3 = RELOAD_VALUE_H; //initial counter values RL3 = RELOAD_VALUE_L; set_ET3; //enable Timer3 interrupt set_EA; //enable interrupts set_TR3; //Timer3 run while(1); }
???????????????????????????????????????3???????ж??
??????????????????????????????????
void InitialUART1_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator { P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1 T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1 clr_BRCK; //timer 1 #ifdef FOSC_160000 RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ #endif #ifdef FOSC_166000 RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ #endif set_TR3; //Trigger Timer3 }
#define HIBYTE(v1) ((UINT8)((v1)>>8)) //v1 is UINT16 #define LOBYTE(v1) ((UINT8)((v1)&0xFF))
SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1
T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1
#ifdef FOSC_160000 RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ #endif #ifdef FOSC_166000 RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ #endif
set_TR3; //Trigger Timer3
??????????Linux??Qt?????????
??????SDRAM???????????
972369124