C8051F020实例
单片机源程序如下:
-
- /********************************************************************************************************************************************
- /*** C8051F120开发板实验: 5. 串口通讯实验
- /***
- /*** 说明: 本实验采用UART0输出数据到PC机 实验时将跳线帽接至+3V 复位一次,单片机发送256个数据 波特率为115200
- /*** 推荐使用本店EC5进行下载和调试
- /*** 开发环境: C8051F120最小系统板、EC5调试器、Keil uVision2
- *********************************************************************************************************************************************/
- #include <c8051f120.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define SYSCLK 100000000UL // SYSCLK frequency in Hz
- #define BAUDRATE 115200 // Baud rate of UART in bps
- sfr16 RCAP2 = 0xCA; /* TIMER 2 CAPTURE REGISTER - LOW BYTE */
- sfr16 TMR2 = 0xCC; /* TIMER 2 - LOW BYTE */
- void SYSCLK_Init();
- void PORT_Init();
- void UART0_Init();
- void SYSCLK_Init()
- {
- uint i = 0;
- SFRPAGE = CONFIG_PAGE;
- OSCXCN = 0x67;
- for (i = 0; i < 3000; i++); // Wait 1ms for initialization
- while ((OSCXCN & 0x80) == 0);
- PLL0CN = 0x04;
- CCH0CN &= ~0x20;
- SFRPAGE = LEGACY_PAGE;
- FLSCL = 0xB0;
- SFRPAGE = CONFIG_PAGE;
- CCH0CN |= 0x20;
- PLL0CN |= 0x01;
- PLL0DIV = 0x01;
- PLL0FLT = 0x01;
- PLL0MUL = 0x04; // 4倍倍频 -> 100MHz
- for (i = 0; i < 15; i++); // Wait 5us for initialization
- PLL0CN |= 0x02;
- while ((PLL0CN & 0x10) == 0);
- CLKSEL = 0x02;
- }
- void PORT_Init()
- {
- SFRPAGE = CONFIG_PAGE; // 寄存器页配置
- XBR0 = 0x04; // RART0: EN
- XBR2 = 0x40; // 全局弱上拉使能
- P0MDOUT = 0xFF;
- }
- void UART0_Init()
- {
- uchar SFRPAGE_SAVE = SFRPAGE;
- SFRPAGE = UART0_PAGE;
- SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX
- SSTA0 = 0x15;
- SFRPAGE = TMR2_PAGE;
- TMR2CN = 0x00;
- TMR2CF = 0x08;
- RCAP2 = -((uint)(SYSCLK / BAUDRATE) >> 4);
- TMR2 = RCAP2;
- TR2 = 1;
- EA = 1;
- SFRPAGE = SFRPAGE_SAVE;
- }
- void main()
- {
- uchar SFRPAGE_SAVE;
- uint i;
- WDTCN=0XDE;
- WDTCN=0XAD;
- SYSCLK_Init();
- PORT_Init();
- UART0_Init();
- for(i=0;i<256;i++)
- {
- SFRPAGE = UART0_PAGE;
- SBUF0=i;
- while(!TI0);
- TI0=0;
- SFRPAGE = SFRPAGE_SAVE;
- }
- while(1);
- }
复制代码
所有资料51hei提供下载:
C8051F120例程.rar
(59.57 KB, 下载次数: 34)
|