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

📄 单片机与电脑通讯.lst

📁 这是本人花了200元买的51开发板上的所有程序资料
💻 LST
字号:
C51 COMPILER V7.50   单芲籣与电脑通讯                                                      04/03/2007 20:06:11 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 单芲籣与电脑通讯
OBJECT MODULE PLACED IN 单片机与电脑通讯.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 单片机与电脑通讯.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //MCU: AT89S51
   2          //晶振:11.0592M  (一定要用这个晶振)
   3          
   4          #include"AT89X51.H"
   5          #include "absacc.h"
   6          #include "stdio.h"
   7          #include "stdlib.h"
   8          unsigned char code numcode[]={0xc0,0xf9,0xa4,0xb0,0x99,
   9                                        0x92,0x82,0xf8,0x80,0x90,
  10                                                                    
  11                                                                    };//数字0~9及"-"共阳数码管代码 
  12          unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
  13                                       0xef,0xdf,0xbf,0x7f};
  14          
  15          unsigned char dispbuff[8]={0,0,0,0,0,0,0,0};
  16          unsigned char disp_bit_count;
  17          unsigned char disp_count;
  18          
  19          unsigned char send_allow=1;
  20          unsigned int send_count; /*定时器计数变量*/
  21          unsigned char zhi=0;
  22          unsigned char r_char;
  23          
  24          /********1ms延时子程序***********/
  25          delay_nms(unsigned int n)
  26          {
  27   1       unsigned int i;
  28   1       unsigned char j;
  29   1      
  30   1       for(i=0;i<n;i++)
  31   1          for(j=0;j<120;j++)
  32   1                ;     //空操作
  33   1      }
  34          
  35          
  36          void main(void)
  37          {       
  38   1      // 以下是设置中断和定时器
  39   1              PT0=1; 
  40   1              ET0=1;
  41   1              ES=1;  //开串口接收中断
  42   1              IT0=1;IT1=1;
  43   1      
  44   1          TMOD=0X20;
  45   1              
  46   1      // 定时器0为产生1ms的中断,定时器1为9600bit/s 的波特率发生器
  47   1              TH0=-1000/256;
  48   1              TL0=-1000%256;
  49   1              TL1=0xfd; //波特率发生
  50   1              TH1=0xfd;
  51   1          SCON=0xd8;
  52   1          PCON=0X00;//波特率不加倍    
  53   1      // 开定时器  
  54   1              TR1=1;
  55   1              TR0=1;
C51 COMPILER V7.50   单芲籣与电脑通讯                                                      04/03/2007 20:06:11 PAGE 2   

  56   1              TI=1;
  57   1              EA=1;
  58   1              while(1)
  59   1                {
  60   2                 if(P2_0==0)
  61   2              {
  62   3                delay_nms(2);
  63   3                if(P2_0==0)
  64   3                  {
  65   4                   //按键SW1按下,停止发送,再按一下继续发送
  66   4                               send_allow^=1;
  67   4                   while(P2_0==0);
  68   4                  }
  69   3              }
  70   2      
  71   2                }
  72   1      }
  73          
  74          // 定时器0的中断服务程序,向串口发送姿态数据。
  75          void intsvr1(void) interrupt 1
  76          {
  77   1      
  78   1      // 重新装入定时器0的初值;
  79   1              TH0=-1000/256;  
  80   1              TL0=-1000%256; 
  81   1          send_count++;
  82   1              /*****数码管显示*********/
  83   1          disp_count++;
  84   1        if(disp_count==4)
  85   1          {
  86   2            disp_count=0;
  87   2            P0=numcode[dispbuff[disp_bit_count]];
  88   2           P1=dispbitcode[disp_bit_count];
  89   2            disp_bit_count++;
  90   2            if(disp_bit_count==8)
  91   2              {
  92   3                disp_bit_count=0;
  93   3              }
  94   2           }
  95   1        if(disp_count==8)
  96   1          {
  97   2            disp_count=0;
  98   2          }
  99   1      /////////////////////////////////////////////////         
 100   1        //***每隔0.2秒发一个字符到电脑上                      
 101   1         if (send_count==200)                                         // 0.2秒判断
 102   1              {
 103   2          send_count=0;
 104   2              if(send_allow==1)
 105   2               {
 106   3                putchar(zhi);// 发送字符
 107   3            zhi++;
 108   3               }
 109   2              }
 110   1      }  
 111          
 112          
 113          void receive(void) interrupt 4 using 1
 114          {
 115   1       RI=0;  //清楚接收标志位
 116   1       r_char=SBUF;  //将接收缓冲区数据读出
 117   1       dispbuff[2]=r_char/100;
C51 COMPILER V7.50   单芲籣与电脑通讯                                                      04/03/2007 20:06:11 PAGE 3   

 118   1       dispbuff[1]=(r_char%100)/10;
 119   1       dispbuff[0]=r_char%10;
 120   1      }        


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    275    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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