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

📄 mainloop.lst

📁 基于usb开发板的hid键盘,使用者可根据此代码编写自己的HID设备
💻 LST
字号:
C51 COMPILER V6.12  MAINLOOP                                                               06/06/2004 10:26:11 PAGE 1   


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

stmt level    source

   1          //////MAINLOOP.C
   2          #include "common.h"
   3          #include "mainloop.h"
   4          #include "d12ci.h"
   5          #include "disp.h"
   6          #include "isr.h"
   7          #include "chap_9.h"
   8          #include "protodma.h"
   9          
  10          EPPFLAGS bEPPflags;
  11          
  12          uchar GenEpBuf[EP1_PACKET_SIZE];
  13          uchar EpBuf[EP2_PACKET_SIZE];
  14          IO_REQUEST idata ioRequest;
  15          unsigned char ioSize, ioCount;
  16          unsigned long ClockTicks = 0;
  17          uchar xdata MainEpBuf[256];
  18          
  19          void init_timer0(void)
  20          {
  21   1      	TMOD &= 0xF0;
  22   1      	TMOD |= 0x1;
  23   1      	TL0 = 0x0;
  24   1      	TH0 = 0x0;
  25   1      	ET0 = 1;
  26   1      	TR0 = 1;
  27   1      	PT0 = 1;
  28   1      	EA = 1;
  29   1      }
  30          void init_special_interrupts(void)
  31          {
  32   1      	IT0 = 0;
  33   1      	EX0 = 1;
  34   1      	PX0 = 0; 
  35   1      }
  36          void init_port()
  37          {
  38   1      	P0 = 0xff;
  39   1      	P1 = 0xff;
  40   1      	P2 = 0xff;
  41   1      	P3 = 0xff;
  42   1      //	MCU_D12CS = 0x0;
  43   1      	D12SUSPD = 0;
  44   1      }
  45          void disconnect_USB(void)
  46          {
  47   1      	D12_SetMode(D12_NOLAZYCLOCK,D12_SETTOONE|D12_CLOCK_12M);
  48   1      }
  49          void connect_USB(void)
  50          {
  51   1      	DISABLE;
  52   1      	bEPPflags.value = 0;
  53   1      	ENABLE;
  54   1      	D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT,D12_SETTOONE|D12_CLOCK_12M);
  55   1      }
C51 COMPILER V6.12  MAINLOOP                                                               06/06/2004 10:26:11 PAGE 2   

  56          void reconnect_USB(void)
  57          {
  58   1      	unsigned long clk_cnt;
  59   1      	MCU_LED0 = 0;
  60   1      	MCU_LED1 = 0;
  61   1      	D12SUSPD = 0;
  62   1      	disconnect_USB();
  63   1      	for(clk_cnt = 0;clk_cnt<10000;clk_cnt++);
  64   1      	connect_USB();
  65   1      	MCU_LED0 = 1;
  66   1      	MCU_LED1 = 1;
  67   1      }
  68          
  69          void check_key_LED(void)
  70          {
  71   1      	static unsigned char c, last_key = 0xf;
  72   1      	uchar cc[8]={0,0,0,0,0,0,0,0};
  73   1      	c = MCU_SWM0 & MCU_SWM1;
  74   1      	c &= 0x0f;
  75   1      	if (c != last_key) {
  76   2      //		D12_WriteEndpoint(3, 1, &c);
  77   2      		if(c == 0)
  78   2      			cc[2] = 5;/*相当于‘b按下’*/
  79   2      		else
  80   2      			cc[2] = 0;
  81   2      		D12_WriteEndpoint(3, 8, cc);
  82   2      	}
  83   1      	last_key = c;
  84   1      	if(bEPPflags.bits.ep1_rxdone) {
  85   2      		DISABLE;
  86   2      		bEPPflags.bits.ep1_rxdone = 0;
  87   2      		ENABLE;
  88   2      		MCU_LED0 = !(GenEpBuf[3] & 0x1);
  89   2      		MCU_LED1 = !(GenEpBuf[3] & 0x2);
  90   2      	}
  91   1      }
  92          
  93          main()
  94          {
  95   1      //	uchar key,i;
  96   1      	initcom();
  97   1      	initlcd();
  98   1      		D12_ReadInterruptRegister();
  99   1      		D12_ReadInterruptRegister();
 100   1      		D12_ReadInterruptRegister();
 101   1      		D12_ReadInterruptRegister();
 102   1      		D12_ReadInterruptRegister();
 103   1      		D12_ReadLastTransactionStatus(0);
 104   1      		D12_ReadLastTransactionStatus(1);
 105   1      		D12_ReadLastTransactionStatus(2);
 106   1      	  	D12_ReadLastTransactionStatus(3);
 107   1      		D12_ReadLastTransactionStatus(4);
 108   1      		D12_ReadLastTransactionStatus(5);
 109   1      
 110   1      //	bEPPflags.bits.bus_reset = 1;
 111   1      	init_port();
 112   1      	init_timer0();
 113   1      	init_special_interrupts();
 114   1      //	MCU_D12CS = 1;
 115   1      //	MCU_D12CS = 0;                                
 116   1      	bEPPflags.value = 0;
 117   1      	reconnect_USB();
C51 COMPILER V6.12  MAINLOOP                                                               06/06/2004 10:26:11 PAGE 3   

 118   1      	initlcd();
 119   1      	dispinfo(1,"Test!");
 120   1      
 121   1      
 122   1      	while(1)
 123   1      	{
 124   2      	if(bEPPflags.bits.timer)
 125   2      		{
 126   3      			//dispinfo(1,"timer");
 127   3      			DISABLE;
 128   3      			bEPPflags.bits.timer = 0;
 129   3      			ENABLE;
 130   3      			if(bEPPflags.bits.configuration)
 131   3      				check_key_LED();
 132   3      		}
 133   2      		if(bEPPflags.bits.bus_reset)
 134   2      		{
 135   3      			//dispinfo(1,"   bus_reset");
 136   3      			DISABLE;
 137   3      			bEPPflags.bits.bus_reset = 0;
 138   3      			ENABLE;
 139   3      		//	D12SUSPD = 1;
 140   3      		}
 141   2      		if(bEPPflags.bits.suspend)
 142   2      		{
 143   3      			//dispinfo(1,"   suspend");
 144   3      			DISABLE;
 145   3      			bEPPflags.bits.suspend = 0;
 146   3      			ENABLE;
 147   3      			if(D12SUSPD == 1)
 148   3      			{
 149   4      				D12SUSPD = 0;
 150   4      				P0 = 0xff;
 151   4      				P1 = 0xff;
 152   4      				P2 = 0xff;
 153   4      				P3 = 0xff;
 154   4      			//	D12SUSPD = 1;
 155   4      			//	PCON |= 0x02;
 156   4      			//	while(1);
 157   4      			}
 158   3      		}
 159   2      //		bEPPflags.bits.setup_packet=1;
 160   2      		if(bEPPflags.bits.setup_packet)
 161   2      		{
 162   3      //			dispinfo(1,"   Setup packet");
 163   3      			DISABLE;
 164   3      			bEPPflags.bits.setup_packet = 0;
 165   3      			ENABLE;
 166   3      			control_handler();
 167   3      			//D12SUSPD = 1;
 168   3      		}
 169   2      	}
 170   1      }
 171          timer_isr() interrupt 1
 172          {
 173   1      	DISABLE;
 174   1      	bEPPflags.bits.timer = 1;
 175   1      	ENABLE;
 176   1      //	inportb(12);
 177   1      }
 178          usb_isr() interrupt 0
 179          {
C51 COMPILER V6.12  MAINLOOP                                                               06/06/2004 10:26:11 PAGE 4   

 180   1      	DISABLE;
 181   1      	fn_usb_isr();
 182   1      	ENABLE;
 183   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    542    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =    347      12
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      6    ----
   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 + -