標題: STC12C5A60S2單片機頻率計程序 [打印本頁]

作者: 大眼    時間: 2020-4-12 14:55
標題: STC12C5A60S2單片機頻率計程序
用了STC12C5A60S2做的一個頻率計


單片機源程序如下:
  1. #include "stdio.h"
  2. #include "stc12c5a60s2.h"

  3. unsigned int j;

  4. unsigned long Fx;
  5. char A[10];


  6. void send(char* Data)    //發(fā)送
  7. {
  8.         while(* Data != '\0')
  9.         {
  10.                 SBUF = *Data;
  11.                 while(!(SCON&0x02));
  12.                         SCON &= 0xFD;
  13.                         Data++;
  14.         }
  15. }


  16. void Timer_Init(void) //T1定時模式 T0計數(shù)模式
  17. {
  18.                 unsigned int a=500;
  19.                 TMOD = 0x15;
  20.                 TH1 = (65536-9216)/256;
  21.                 TL1 = (65536-9216)%256;  //10毫秒溢出 0.35%誤差
  22.                 TH0 = 0x00;
  23.                 TL0 = 0x00;
  24.                 TR1 = 1;
  25.                 TR0 = 1;
  26.                 ET1 = 1;
  27.                 while(a--);
  28.                 EA = 1;
  29. }

  30. void Pulse()   
  31. {
  32.                 Fx=TL0+TH0*256;       //賦值脈沖
  33.                 TH0=0x00;             //清零
  34.                 TL0=0x00;
  35. }
  36.        
  37. void T11(void) interrupt 3   //0 外0  1 定0  2 外1  3 定1  4 串
  38. {  
  39.                 TH1 = (65536-9216)/256;   //10ms定時 0%誤差
  40.                 TL1 = (65536-9216)%256;
  41.                 j++;
  42.                 if(j>=100)
  43.                 {
  44.                 Pulse();
  45.                 sprintf(A,"%ld",Fx);
  46.                 send(A);
  47.                 send("\r\n");
  48.                 j=0;
  49.                 }
  50. }

  51. void UartInit(void)                //9600bps@11.0592MHz
  52. {
  53.         PCON &= 0x7F;                //波特率不倍速
  54.         SCON = 0x50;                //8位數(shù)據(jù),可變波特率
  55.         AUXR |= 0x04;                //獨立波特率發(fā)生器時鐘為Fosc,即1T
  56.         BRT = 0xDC;                //設定獨立波特率發(fā)生器重裝值
  57.         AUXR |= 0x01;                //串口1選擇獨立波特率發(fā)生器為波特率發(fā)生器
  58.         AUXR |= 0x10;                //啟動獨立波特率發(fā)生器
  59. }


  60. void main()
  61. {
  62.         Timer_Init();
  63.         UartInit();
  64.         while(1);
  65. }
復制代碼

所有資料51hei提供下載:
8.8(頻率計).zip (31.15 KB, 下載次數(shù): 35)


作者: admin    時間: 2020-4-12 21:38
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者: 0711zhao    時間: 2020-11-4 20:53
void Timer_Init(void) //T1定時模式 T0計數(shù)模式
{
                unsigned int a=500;
                TMOD = 0x15;
                TH1 = (65536-9216)/256;
                TL1 = (65536-9216)%256;  //10毫秒溢出 0.35%誤差
                TH0 = 0x00;
                TL0 = 0x00;
                TR1 = 1;
                TR0 = 1;
                ET1 = 1;
                while(a--);
                EA = 1;
這里為什么 要用while(a--);?
作者: ly132806    時間: 2020-11-13 17:16
求原理仿真圖




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1