找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3621|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C8051F020串口通訊 IO口測(cè)試 流水燈閃爍燈等實(shí)例程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
C8051F020實(shí)例


單片機(jī)源程序如下:
  1.                                          
  2. /********************************************************************************************************************************************
  3. /***                                        C8051F120開發(fā)板實(shí)驗(yàn):        5. 串口通訊實(shí)驗(yàn)
  4. /***
  5. /***          說明: 本實(shí)驗(yàn)采用UART0輸出數(shù)據(jù)到PC機(jī)  實(shí)驗(yàn)時(shí)將跳線帽接至+3V 復(fù)位一次,單片機(jī)發(fā)送256個(gè)數(shù)據(jù) 波特率為115200                        
  6. /***                        推薦使用本店EC5進(jìn)行下載和調(diào)試       
  7. /*** 開發(fā)環(huán)境:        C8051F120最小系統(tǒng)板、EC5調(diào)試器、Keil uVision2

  8. *********************************************************************************************************************************************/

  9. #include <c8051f120.h>

  10. #define uchar unsigned char
  11. #define uint unsigned int

  12. #define SYSCLK      100000000UL               // SYSCLK frequency in Hz
  13. #define BAUDRATE    115200                          // Baud rate of UART in bps


  14. sfr16 RCAP2  = 0xCA;            /* TIMER 2 CAPTURE REGISTER - LOW BYTE          */
  15. sfr16 TMR2   = 0xCC;            /* TIMER 2 - LOW BYTE                           */

  16. void SYSCLK_Init();
  17. void PORT_Init();
  18. void UART0_Init();


  19. void SYSCLK_Init()
  20. {   
  21.     uint i = 0;

  22.     SFRPAGE   = CONFIG_PAGE;
  23.     OSCXCN    = 0x67;
  24.     for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
  25.     while ((OSCXCN & 0x80) == 0);
  26.     PLL0CN    = 0x04;
  27.     CCH0CN   &= ~0x20;
  28.     SFRPAGE   = LEGACY_PAGE;
  29.     FLSCL     = 0xB0;
  30.     SFRPAGE   = CONFIG_PAGE;
  31.     CCH0CN   |= 0x20;
  32.     PLL0CN   |= 0x01;
  33.     PLL0DIV   = 0x01;
  34.     PLL0FLT   = 0x01;
  35.     PLL0MUL   = 0x04;                        // 4倍倍頻 -> 100MHz
  36.     for (i = 0; i < 15; i++);          // Wait 5us for initialization
  37.     PLL0CN    |= 0x02;
  38.     while ((PLL0CN & 0x10) == 0);
  39.     CLKSEL    = 0x02;
  40. }

  41. void PORT_Init()
  42. {
  43.     SFRPAGE  = CONFIG_PAGE;                // 寄存器頁配置
  44.     XBR0     = 0x04;                        // RART0: EN
  45.     XBR2     = 0x40;                        // 全局弱上拉使能
  46.         P0MDOUT  = 0xFF;
  47. }

  48. void UART0_Init()
  49. {
  50.         uchar SFRPAGE_SAVE = SFRPAGE;

  51.         SFRPAGE = UART0_PAGE;
  52.            SCON0   = 0x50;               // SCON0: mode 1, 8-bit UART, enable RX
  53.         SSTA0   = 0x15;

  54.         SFRPAGE = TMR2_PAGE;
  55.         TMR2CN  = 0x00;
  56.         TMR2CF  = 0x08;

  57.         RCAP2   = -((uint)(SYSCLK / BAUDRATE) >> 4);
  58.         TMR2    = RCAP2;
  59.         TR2     = 1;

  60.         EA      = 1;
  61.         SFRPAGE = SFRPAGE_SAVE;
  62. }

  63. void main()
  64. {   
  65.         uchar SFRPAGE_SAVE;
  66.         uint i;
  67.         WDTCN=0XDE;
  68.         WDTCN=0XAD;
  69.         SYSCLK_Init();
  70.         PORT_Init();
  71.         UART0_Init();
  72.         for(i=0;i<256;i++)
  73.         {
  74.                 SFRPAGE = UART0_PAGE;
  75.                 SBUF0=i;
  76.                 while(!TI0);
  77.                 TI0=0;
  78.                 SFRPAGE = SFRPAGE_SAVE;       
  79.         }
  80.         while(1);
  81. }
復(fù)制代碼

所有資料51hei提供下載:
C8051F120例程.rar (59.57 KB, 下載次數(shù): 34)


評(píng)分

參與人數(shù) 2黑幣 +62 收起 理由
YJGG + 12 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表