⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wqq.lst

📁 本人亲自写的基于无刷电机的速度数显程序
💻 LST
字号:
C51 COMPILER V8.02   WQQ                                                                   02/25/2008 15:32:29 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE WQQ
OBJECT MODULE PLACED IN wqq.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wqq.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          ***********************************************************************
   2                               //      无刷电机转速显示程序
   3          //AT89C51单片机,12M晶振,P0口输出段码口,P2口输出列扫描,4个共阳LED数码管
   4          //T0为16位20ms定时模式,T1为计数模式
   5          //电机转速rpm=计数器1s计数值count()*20 
   6          /************************************************************************/
   7          #include <reg51.h>
*** ERROR C141 IN LINE 13 OF C:\KEIL\C51\INC\ATMEL\REG51.H: syntax error near 'sfr'
   8          #define uint unsigned int
   9          #define uchar unsigned char
  10          uchar code dispbit[]={0x01,0x02,0x04,0x08};         //列扫描控制字
  11          uchar code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};
  12          uchar dispbuf[4]={0,0,0,0};
  13          uint N;               //定时中断的次数
  14          unsigned long f,rpm;  //电机的频率、转速
  15          void scan(void);
  16          uint count(void);
  17          void delay1ms(uint t);
  18            
  19          void main(void)
  20          {
  21   1        uint i;
  22   1        uchar temp[4];
  23   1        EA=1;ET0=1;
  24   1        TH0=(65536-20000)/256;
  25   1        TL0=(65536-20000)%256;
  26   1        TH1=0x00;TL1=0x00;
  27   1        TMOD=0x51;
  28   1        TR0=1;TR1=1;
  29   1      
  30   1        while(1)
  31   1        {
  32   2         rpm=20*f;   //电机转速=电机的频率f×20
  33   2         for(i=0;i<4;i++)
  34   2          {
  35   3           temp[i]=0;
  36   3          }
  37   2        i=0;
  38   2        while(rpm/10)
  39   2         {
  40   3          temp[i]=rpm%10;
  41   3          rpm=rpm/10;
  42   3          i++;
  43   3          }
  44   2        temp[i]=rpm;
  45   2        for(i=0;i<4;i++)
  46   2         {
  47   3          dispbuf[i]=temp[i];
  48   3          }
  49   2         scan();
  50   2         }
  51   1       }      
  52            
  53           /*tms延时*/
  54           void delay1ms(uint t)
C51 COMPILER V8.02   WQQ                                                                   02/25/2008 15:32:29 PAGE 2   

  55           {
  56   1         int m,j;
  57   1         for(m=0;m<t;m++)
  58   1           for(j=0;j<150;j++);
  59   1       }
  60          
  61          
  62          /*20ms定时中断程序*/
  63          void timer0(void) interrupt 1 using 1
  64          {
  65   1              
  66   1        TH0=(65536-20000)/256;
  67   1        TL0=(65536-20000)%256;
  68   1        N++;
  69   1        if(N==50)
  70   1          {
  71   2            N=0;                 
  72   2            f=TH1*256+TL1;
  73   2            TH1=0;
  74   2            TL1=0;
  75   2            TR1=1;
  76   2          }
  77   1              TR0=1;
  78   1              scan();
  79   1       }
  80          
  81          /*显示程序*/
  82           void scan(void)
  83           {
  84   1         uchar k;
  85   1         for(k=0;k<4;k++)
  86   1          {
  87   2           P0=dispcode[dispbuf[k]];
  88   2           P2=dispbit[k];
  89   2           delay1ms(4);
  90   2               P2=0x00;
  91   2          } 
  92   1       }

C51 COMPILATION COMPLETE.  0 WARNING(S),  1 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -