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

📄 show.lst

📁 CAN现场总线.rar
💻 LST
字号:
C51 COMPILER V6.12  SHOW                                                                   09/28/2009 16:41:42 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE SHOW
OBJECT MODULE PLACED IN .\show.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\show.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   2          //		功能描述:															   &
   3          //      本程序为显示程序,上电后显示255                                        &
   4          //      主要目的:熟悉硬件,以及不影响其它位的显示编程                         &
   5          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   6          
   7          //【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                   
   8          //【声明】 作者: PIAE小组
   9          
  10          #include <reg52.h>
  11          #include <intrins.h>
  12          
  13          //对管脚分配进行了定义
  14          //对子函数进行了声明
  15          
  16          # define uchar unsigned char
  17          # define uint  unsigned int
  18          
  19          # define NOPS	{_nop_();_nop_();_nop_();_nop_();_nop_();}/*延时5us*/
  20          
  21          //编码规则是hgfedcba ,h亦是dp,控制小数点,这里都设为1,不亮,eg:9==0b10010000;
  22          uchar code led[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  23          uchar Show_Data = 0xff;//数码管要显示的数据
  24          
  25          //IO 口分配
  26          sbit  	LED_RED     =  P2^1;//红色指示灯,作为接收指示灯
  27          sbit  	LED_GRE     =  P2^2;//绿色指示灯,作为发送指示灯
  28          sbit    SJA1000_CS  = P2^0;//SJA1000片选管脚. 低电平有效
  29          
  30          void Delay(uchar delay_time); //延时程序
  31          void led_seg7(uchar from,uchar number); //数码管显示程序
  32          
  33          void main(void)
  34          {
  35   1          _nop_();
  36   1          while(1)
  37   1          {
  38   2              NOPS;
  39   2              led_seg7(1,Show_Data);
  40   2              LED_RED = !LED_RED;
  41   2              LED_GRE = !LED_GRE;
  42   2          }
  43   1      }
  44          
  45          //延时程序
  46          void Delay(uchar delay_time)
  47          {
  48   1          while(delay_time--)
  49   1          {}
  50   1      }
  51          
  52          
  53          //from(1_4):数码管显示起始位置(从右到左),number:显示的数
  54          //eg: leg_seg7(2,7)
  55          void led_seg7(uchar from,uchar number)  
C51 COMPILER V6.12  SHOW                                                                   09/28/2009 16:41:42 PAGE 2   

  56          {
  57   1      	uchar digit,temp_l;
  58   1      	uchar temp_h=0x7f;				  //0b0111111
  59   1      	temp_h = _cror_(temp_h,from-1);   //确定从哪一位开始显示,即确定高四位,
  60   1      									  //假设从第一位开始,temp_h==0b10111111
  61   1      	temp_h = temp_h & 0xf0;           //取高四位,temp_h==0b10110000
  62   1      	temp_l = P2 & 0x0f;               //取P2的低四位(c51默认下都是高电平),temp_l==0b00001111
  63   1      	P2 = temp_h | temp_l;             //设定P2口 P2==0b1011111|0b00001111
  64   1      									  //P2==0b1011111,0xbf;
  65   1      
  66   1          if(number==0)		//如果number==0的话,立即发送0的数码管码
  67   1          {
  68   2              P0 = led[0];
  69   2              Delay(10);
  70   2              P0 = 0xff;
  71   2          }        
  72   1          else
  73   1          {
  74   2              while(number)					//如果数字式大于0,就永远死循环,eg:number==7
  75   2              {
  76   3      	    	digit = number%10 ;			//eg:digit=7%10,digit==7;
  77   3      			number /= 10;				//eg:number=7/10,number==0;
  78   3      			P0 = led[digit] ;			//送数码管码,eg:7亦是0xf8
  79   3      			Delay(10);
  80   3      			temp_h = P2 & 0xf0;               //取P2的高四位,eg:temp_h=0=0b1011000;
  81   3      			temp_h = temp_h | 0x0f;           //拼装 temp_h,进行位选,eg:temp_h==0b1011111
  82   3      			temp_h = _cror_(temp_h,1);		  //eg:temp_h==0b11011111;
  83   3      			temp_h = temp_h & 0xf0;           //取高四位,eg:temp_h==0b11010000
  84   3      			temp_l = P2 & 0x0f;               //取P2的低四位, eg:temp_l==0b101111&0b00001111,temp_l==0b00001111;
  85   3      			P0 = 0xff;						  //数码管清除
  86   3      			P2 = temp_h | temp_l;             //设定P2口,eg:P2==0b11010000|0b00001111,P2==0b11011111;
  87   3              }
  88   2          }
  89   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    126    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   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 + -