📄 bulkout.lst
字号:
C51 COMPILER V6.10 BULKOUT 06/15/2006 20:27:45 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE BULKOUT
OBJECT MODULE PLACED IN .\bulkout.obj
COMPILER INVOKED BY: F:\keilc51\C51\BIN\C51.EXE ..\bulkout\bulkout.c DEBUG OBJECTEXTEND PRINT(.\bulkout.lst) OBJECT(.\bu
-lkout.obj)
stmt level source
1 // bulkout.C 7-25-00 LTH
2 // A Simple bulk OUT transfer. Display bytes received over EP2OUT in 7-seg readout
3 xdata char OUT2BUF[64] _at_ 0x7DC0; // 64-byte buffer for EP2-OUT data
4 xdata char OUT2BC _at_ 0x7FC9; // EP2OUT Byte Count Register
5 xdata char OUT2CS _at_ 0x7FC8; // EP2OUT Control/Status register
6 xdata char I2CS _at_ 0x7FA5; // I2C port Control/Status
7 xdata char I2DAT _at_ 0x7fA6; // I2C data
8 #define bBSY 0x02 // OUT2CS.1 is busy bit
9 #define bSTOPBIT 0x40 // I2CS.6 is i2c STOP bit
10 #define DISPLAYTIME 200 // approx. milliseconds
11 char count,j; // number of digits sent over EP2OUT
12 char xdata Digit[ ]=
13 {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e};
14 void display_hex (char val); // display 'val' as hex in 7-seg readout
15 void delay (int time);
16 void display_hex (char val) // display one hex digit (over i2c bus)
17 {
18 1 while (I2CS & bSTOPBIT); // wait for STOP bit LOW--last operation complete
19 1 I2CS = 0x80; // set the START bit
20 1 I2DAT = 0x42; // IO expander address=42, LSB=0 for write
21 1 while ((I2CS&0x01)!=0x01); // wait for DONE=1 (i2c transmit complete)
22 1 I2DAT = val; // send the data byte
23 1 while ((I2CS&0x01)!=0x01); // wait for DONE=1
24 1 I2CS = 0x40; // set the STOP bit
25 1 }
26 int i,k;
27 void delay (int time)
28 {
29 1 for (k=0; k<time; k++) // kill some milliseconds
30 1 for (i=0; i<400; i++);
31 1 }
32 main()
33 {
34 1 while (1) // forever
35 1 {
36 2 while (OUT2CS & bBSY); // loop while EP2OUT busy bit is HI
37 2 count = OUT2BC; // how many bytes were sent over EP2OUT?
38 2 for(j=0; j<count; j++)
39 2 {
40 3 display_hex(Digit[OUT2BUF[j]]); // look up segments
41 3 delay(DISPLAYTIME); // delay so we can see it
42 3 display_hex(0xFF); // blank display (active-low segments; 1=off)
43 3 delay(DISPLAYTIME);
44 3 }
45 2 OUT2BC = 0; // arm the next OUT2 transfer (BC=x)
46 2 }
47 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 190 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 16 ----
PDATA SIZE = ---- ----
C51 COMPILER V6.10 BULKOUT 06/15/2006 20:27:45 PAGE 2
DATA SIZE = 6 ----
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 + -