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

📄 osc.lst

📁 基于Mini51板的数字示波器设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   OSC                                                                   01/31/2009 14:04:30 PAGE 1   


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

line level    source

   1          #include "lcd12864.h"
   2          #include "osc.h"
   3          #include "common.h"
   4          #include "dots.h"
   5          
   6          unsigned char val_vdiv=2; //Y轴电压标度索引0~5
   7          unsigned char val_tdiv=0; //X轴时间标度索引0~5
   8          unsigned char acdc_flag=0; //交流直流档切换
   9          unsigned char run_flag=0;  //运行停止切换
  10          unsigned char pointxA;
  11          unsigned char pointxB;
  12          unsigned char pointyA;
  13          unsigned char pointyB;
  14          unsigned char xdata da_buffer[DATA_SIZE];
  15          unsigned char da_finish;
  16          char movx=0; //水平移动
  17          char movy=0; //垂直移动
  18          
  19          unsigned char code vdiv [] = {1,2,5,10,20,50};//电压标度索引是0到5,实际是0.1到5.0
  20          unsigned char code tdiv [] = {5,10,20,50,100};//扫描时间标度索引是0到5
  21          
  22          void disp_ypoint(void)
  23          {
  24   1              unsigned char dat[ALL_LINE];
  25   1              unsigned char j,i;      
  26   1              for(j=0;j<3;j++) {
  27   2                      for(i=0;i<7;i++) dat[i] = 0; 
  28   2                      if(j==0) {
  29   3                              dat[(pointyA-2)/8] |= 0x01<<((pointyA-2)%8);
  30   3                              dat[(pointyA-1)/8] |= 0x01<<((pointyA-1)%8);
  31   3                              dat[(pointyA  )/8] |= 0x01<<((pointyA  )%8);
  32   3                              dat[(pointyA+1)/8] |= 0x01<<((pointyA+1)%8);
  33   3                              dat[(pointyA+2)/8] |= 0x01<<((pointyA+2)%8);
  34   3                      
  35   3                              dat[(pointyB-2)/8] |= 0x01<<((pointyB-2)%8);
  36   3                              dat[(pointyB-1)/8] |= 0x01<<((pointyB-1)%8);
  37   3                              dat[(pointyB  )/8] |= 0x01<<((pointyB  )%8);
  38   3                              dat[(pointyB+1)/8] |= 0x01<<((pointyB+1)%8);
  39   3                              dat[(pointyB+2)/8] |= 0x01<<((pointyB+2)%8);
  40   3                      
  41   3                              /*上下平移标志*/
  42   3                              if(movy== (HEIGHT/2)) {                 
  43   4                                      dat[(HEIGHT/2+4-movy)/8] |= 0x01<<((HEIGHT/2+4-movy)%8);
  44   4                                      dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
  45   4                              }
  46   3                              else if(movy==-(HEIGHT/2)) {
  47   4                                      dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
  48   4                                      dat[(HEIGHT/2+6-movy)/8] |= 0x01<<((HEIGHT/2+6-movy)%8);
  49   4                              }
  50   3                              else {
  51   4                                      dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
  52   4                              }                                               
  53   3      
  54   3                              /*写LCD,刷新显示*/
  55   3                              for(i=0;i<ALL_LINE;i++) {
C51 COMPILER V8.02   OSC                                                                   01/31/2009 14:04:30 PAGE 2   

  56   4                                      lcd_cmd_wr(SETY+i,0);
  57   4                                      lcd_cmd_wr(SETX+ZEROX-4,0);
  58   4                                      lcd_data_wr(dat[i],0);
  59   4                              }
  60   3                      }
  61   2                      else if(j==1){
  62   3                              dat[(pointyA-1)/8] |= 0x01<<((pointyA-1)%8);
  63   3                              dat[(pointyA  )/8] |= 0x01<<((pointyA  )%8);
  64   3                              dat[(pointyA+1)/8] |= 0x01<<((pointyA+1)%8);
  65   3                              dat[(pointyB-1)/8] |= 0x01<<((pointyB-1)%8);
  66   3                              dat[(pointyB  )/8] |= 0x01<<((pointyB  )%8);
  67   3                              dat[(pointyB+1)/8] |= 0x01<<((pointyB+1)%8);
  68   3                      
  69   3                              /*上下平移标志*/
  70   3                              dat[(HEIGHT/2+4-movy)/8] |= 0x01<<((HEIGHT/2+4-movy)%8);
  71   3                              dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
  72   3                              dat[(HEIGHT/2+6-movy)/8] |= 0x01<<((HEIGHT/2+6-movy)%8);
  73   3                              
  74   3                              /*写LCD,刷新显示*/
  75   3                                      for(i=0;i<ALL_LINE;i++) {
  76   4                                      lcd_cmd_wr(SETY+i,0);
  77   4                                      lcd_cmd_wr(SETX+ZEROX-3,0);
  78   4                                      lcd_data_wr(dat[i],0);
  79   4                              }
  80   3                      }
  81   2                      else {
  82   3                              dat[(pointyA)/8] |= 0x01<<((pointyA)%8);
  83   3                              dat[(pointyB)/8] |= 0x01<<((pointyB)%8);
  84   3                      
  85   3                              /*上下平移标志*/
  86   3                              if(movy==(HEIGHT/2)) {                  
  87   4                                      dat[(HEIGHT/2+4-movy)/8] |= 0x01<<((HEIGHT/2+4-movy)%8);
  88   4                                      dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
  89   4                              }
  90   3                              else if(movy==-(HEIGHT/2)) {
  91   4                                      dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
  92   4                                      dat[(HEIGHT/2+6-movy)/8] |= 0x01<<((HEIGHT/2+6-movy)%8);
  93   4                              }
  94   3                              else {
  95   4                                      dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
  96   4                              }
  97   3                              
  98   3                              /*写LCD,刷新显示*/
  99   3                              for(i=0;i<ALL_LINE;i++) {
 100   4                                      lcd_cmd_wr(SETY+i,0);
 101   4                                      lcd_cmd_wr(SETX+ZEROX-2,0);
 102   4                                      lcd_data_wr(dat[i],0);
 103   4                              }
 104   3                      }
 105   2              }
 106   1      }
 107          //LCD波形显示区
 108          void disp(unsigned char x,unsigned char y,char l)
 109          {
 110   1              unsigned char dat[ALL_LINE],j,k;        
 111   1              x += ZEROX;     
 112   1              y = ZEROY-1-y;//1是修正1行空白行
 113   1              dat[0] = 0x10;
 114   1              dat[1] = 0x0;
 115   1              dat[2] = 0x0;
 116   1              dat[3] = 0x0;
 117   1              dat[4] = 0x0;
C51 COMPILER V8.02   OSC                                                                   01/31/2009 14:04:30 PAGE 3   

 118   1              dat[5] = 0x0;
 119   1              dat[6] = 0x40;
 120   1      
 121   1              
 122   1              if((x+1)%5==0) {
 123   2                      dat[3] |= 0x20; /*水平中心线*/
 124   2                      dat[pointyA/8] |= 0x01<<pointyA%8;      /*水平测量线A*/
 125   2                      dat[pointyB/8] |= 0x01<<pointyB%8;      /*水平测量线B*/
 126   2              }
 127   1      
 128   1              /*上下边框格点*/
 129   1              //if(((x-ZEROX) ==WIDTH/2-1)||((x-ZEROX)%5==0)||((x-ZEROX) == WIDTH/2+1)) {
 130   1              if((x-ZEROX)%5==0) {
 131   2                      dat[0] |= 0x20;dat[ALL_LINE-1] |= 0x20;
 132   2              }       
 133   1      
 134   1              /*垂直测量线格点和垂直中心线*/
 135   1              if(((x-ZEROX) == pointxA)||((x-ZEROX) == pointxB)||((x-ZEROX) == WIDTH/2)) {
 136   2                      dat[0] |= 0x10;
 137   2                      dat[1] |= 0x42;
 138   2                      dat[2] |= 0x08;
 139   2                      dat[3] |= 0x21;
 140   2                      dat[4] |= 0x84;
 141   2                      dat[5] |= 0x10;
 142   2                      dat[6] |= 0x42;
 143   2              }       
 144   1      
 145   1              /*顶端测量线三角符号*/
 146   1              if(x-ZEROX==(pointxA-2)) dat[0] |= 0x01;
 147   1              if(x-ZEROX==(pointxA-1)) dat[0] |= 0x03;
 148   1              if(x-ZEROX==(pointxA  )) dat[0] |= 0x07;        
 149   1              if(x-ZEROX==(pointxA+1)) dat[0] |= 0x03;
 150   1              if(x-ZEROX==(pointxA+2)) dat[0] |= 0x01;        
 151   1              if(x-ZEROX==(pointxB-2)) dat[0] |= 0x01;
 152   1              if(x-ZEROX==(pointxB-1)) dat[0] |= 0x03;
 153   1              if(x-ZEROX==(pointxB  )) dat[0] |= 0x07;        
 154   1              if(x-ZEROX==(pointxB+1)) dat[0] |= 0x03;
 155   1              if(x-ZEROX==(pointxB+2)) dat[0] |= 0x01;        
 156   1      
 157   1              /*顶端中点左右平移标志*/
 158   1              if(movx == (WIDTH/2-1)) {
 159   2                      if(x-ZEROX==WIDTH/2-movx-1) dat[0] |= 0x07;     
 160   2                      if(x-ZEROX==WIDTH/2-movx  ) dat[0] |= 0x07;             
 161   2                      if(x-ZEROX==WIDTH/2-movx+1) dat[0] |= 0x02;     
 162   2              }
 163   1              else if(movx==-(WIDTH/2-1)) {
 164   2                      if(x-ZEROX==WIDTH/2-movx-1) dat[0] |= 0x02;     
 165   2                      if(x-ZEROX==WIDTH/2-movx  ) dat[0] |= 0x07;             
 166   2                      if(x-ZEROX==WIDTH/2-movx+1) dat[0] |= 0x07;     
 167   2              }
 168   1              else {

⌨️ 快捷键说明

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