找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3660|回復(fù): 0
收起左側(cè)

STC12C5A60S2單片機(jī)的串口實(shí)驗(yàn)程序

[復(fù)制鏈接]
ID:692965 發(fā)表于 2020-10-2 14:07 | 顯示全部樓層 |閱讀模式
最近找一些資料,發(fā)現(xiàn)關(guān)于STC12C5A60S2的資料很少,STC12C5A60S2是新一代的8051,是屬于1T的單片機(jī),我們先說一下12T的單片機(jī)和1T的單片機(jī)的區(qū)別,首先就是速度上,1T的單片機(jī)是12T單片機(jī)的10~12倍左右,我們在用軟件延時的時候,都是死循環(huán),同樣的軟件延時,但是延時的時間就不一樣,就是為1T的單片機(jī)比12T的快12倍,還有就是功能上,也有很多地方很好用,剛開始使用STC12C5A60S2,有些地方我也是不太懂,大家可以一起交流,


這是官網(wǎng)上給出的關(guān)于stc12C5a60s2的數(shù)據(jù)手冊,我也會把源代碼和數(shù)據(jù)手冊放到最后,有需要的可以自行下載,我們的stc12c5a60s2和89c52的引腳是完全一樣的,我們可以直接插到89c52的開發(fā)板上,以下是引腳圖
51hei截圖20201002133944.png 功能.png

還有我們使用的晶振是11.0592MHz的(這個非常重要)
還有我們使用的LED的原理圖
51hei截圖20201002130916.png

當(dāng)P1^4引腳位低電平時,LED燈會亮,但是我們采用的是取反。
剩下的就是控制相關(guān)的寄存器了
串口1的相關(guān)的寄存器.png

第一個我們設(shè)置電源控制寄存器,當(dāng)SMOD=1,波特率加倍




SCON.png


第二個就是串行控制寄存器我們用的是方式2 9位UART,SCON=0x50;
剩下的一個就是總中斷了
總中斷.png

ES表示定時器中斷,EA表示總中斷;這些具體的參數(shù)都在STC官網(wǎng)的數(shù)據(jù)手里面有,第八章串口通信,
處置.png

設(shè)置好TH1和TL1的初值就算弄好了。
我們調(diào)試的過程
調(diào)試.png

1601616621835.jpg

成功點(diǎn)亮LED燈,證明串口通信成功~!~

單片機(jī)源程序如下:
  1. #include "stc15f2k60s2.h"
  2. #include "intrins.h"
  3. sbit LED=P1^5;
  4. typedef unsigned char u8;
  5. typedef unsigned int u16;

  6. u16 receiveData;
  7. void SendByte(unsigned char dat);
  8. void UART_Send_Str(char *pStr);
  9. /*******************************************
  10. 函數(shù)名稱:void main()
  11. 函數(shù)功能:主函數(shù)
  12. 輸入?yún)?shù):無
  13. 輸出參數(shù):無
  14. *******************************************/
  15. void main()
  16. {

  17.    SCON=0x50;
  18.    PCON=0X80;  //波特率加倍
  19.    TMOD|=0x20;
  20.    TH1=0xfA;        //定時器1方式2        8位數(shù)據(jù)加一位檢驗(yàn)位
  21.    TL1=0xfA;
  22.    TR1=1;
  23.    EA=1;        //總中斷
  24.    ES=1;   //定時器中斷允許位

  25. while(1)
  26. {
  27.   //UART_Send_Str("中國!\r\n");  //發(fā)送字符串
  28. }
  29. }
  30. /*******************************************
  31. 函數(shù)名稱:void SendByte(unsigned char dat)
  32. 函數(shù)功能:發(fā)送單個字節(jié)
  33. 輸入?yún)?shù):dat
  34. 輸出參數(shù):無
  35. *******************************************/
  36. void SendByte(unsigned char dat)  
  37. {
  38.   SBUF=dat;
  39.   while(!TI);
  40.   TI=0;
  41. }
  42. /*******************************************
  43. 函數(shù)名稱:void UART_Send_Str(char *pStr)
  44. 函數(shù)功能:發(fā)送字符串
  45. 輸入?yún)?shù):*pStr
  46. 輸出參數(shù):無
  47. *******************************************/
  48. void UART_Send_Str(char *pStr)         
  49. {
  50.    
  51.         while(*pStr != '\0')
  52.         {
  53.                 SendByte(*pStr++);
  54.         }

  55. }
  56. /*******************************************
  57. 函數(shù)名稱:void Uart1() interrupt 4
  58. 函數(shù)功能:串口中斷函數(shù)
  59. 輸入?yún)?shù):無
  60. 輸出參數(shù):無
  61. *******************************************/
  62. void Uart1() interrupt 4         
  63. {receiveData=SBUF;                         //接收數(shù)據(jù)
  64. RI=0;                                                 //關(guān)閉計(jì)時器
  65. SBUF=receiveData;                          //發(fā)送數(shù)據(jù)
  66. while(!TI);
  67. TI=0;                                                   //發(fā)送完成標(biāo)志位
  68. if(receiveData=='2')
  69. {
  70.    LED=~LED;//LED取反

  71. }
  72. }
復(fù)制代碼
程序:
程序.7z (179.45 KB, 下載次數(shù): 27)
pdf:http://www.torrancerestoration.com/bbs/dpj-96160-1.html

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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