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

📄 01-外部中断.lst

📁 CAN现场总线.rar
💻 LST
字号:
C51 COMPILER V6.12  01___瞋_衉_                                                            09/29/2009 13:48:12 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 01___瞋_衉_
OBJECT MODULE PLACED IN .\01-外部中断.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\01-外部中断.c DEBUG OBJECTEXTEND

stmt level    source

   1          //	01-外部中断.c
   2          //	记录外部中断的次数(外部中断的次数),然后显示在数码管
   3          //	29-09-09 akuei2
   4          
   5          #include "reg52.h"
   6          #define uchar unsigned char
   7          
   8          sbit    SJA1000_CS  = P2^0;//SJA1000片选管脚. 低电平有效
   9          
  10          //定义数码管码
  11          uchar code Led_Code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  12          
  13          //定义位选码
  14          //0b111011111,0b11011111,0b10111111,0b01111111
  15          uchar code Led_Select[]={0xEF,0xDF,0xBF,0x7F};  
  16          
  17          int Click;
  18          
  19          //50微秒延迟函数
  20          void Delay_50us(int t)
  21          {
  22   1      	uchar j; 
  23   1          t--;
  24   1      	for(;t>0;t--)  
  25   1         		for(j=19;j>0;j--);
  26   1          
  27   1      }
  28          
  29          //1毫秒延迟函数
  30          void Delay_1ms(int t)
  31          {
  32   1      	uchar j; 
  33   1      	for(;t>0;t--)  
  34   1         		for(j=112;j>0;j--);
  35   1          
  36   1      }
  37          
  38          //数码管显示函数
  39          void Display(void)
  40          {
  41   1      	int Digit[4],i;
  42   1      	Digit[3]=Click/1000;			//第一个数码管取千位
  43   1      	Digit[2]=Click%1000/100;		//第二个数码管取百位
  44   1      	Digit[1]=Click%100/10;			//第三个数码管取十位
  45   1      	Digit[0]=Click%10;				//第四个数码管取个位
  46   1      	for(i=0;i<4;i++)
  47   1      	{
  48   2      		P0=Led_Code[Digit[3-i]];		//送数码管码
  49   2      		P2=Led_Select[i];				//送位选码
  50   2      		Delay_50us(20);					//延迟1微秒
  51   2      		P0=P2=0xff;						//消影
  52   2      	}
  53   1      }
  54          
  55          //初始化函数
C51 COMPILER V6.12  01___瞋_衉_                                                            09/29/2009 13:48:12 PAGE 2   

  56          void Init(void)
  57          {
  58   1      	IT0 = 1;		//外部中断0负边沿触发
  59   1          EX0 = 1;		//打开外部中断0
  60   1          EA = 1;  		//打开总中断
  61   1      	SJA1000_CS = 1;	//片选无效
  62   1      }
  63          
  64          //主函数
  65          void main(void)
  66          {
  67   1      	Init();
  68   1      	while(1)
  69   1      	{
  70   2      		Display();
  71   2      	}
  72   1      }
  73          
  74          //外部0中断函数
  75          void Ir_ex0(void) interrupt 0
  76          {
  77   1      	EX0=0;EA=0;				//关闭外部中断0,关闭全局中断使能
  78   1      	Delay_1ms(10);			//消抖
  79   1      	Click++;				//记录按键次数
  80   1      	if(Click>=10000) Click=0;	//如果案件超过一万次就回归0
  81   1      	EX0=1;EA=1;					//开启外部中断0,开启全局中断使能
  82   1      	
  83   1      
  84   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    271    ----
   CONSTANT SIZE    =     15    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       8
   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 + -