📄 interface8051.lst
字号:
C51 COMPILER V7.00 INTERFACE8051 03/23/2003 15:57:16 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE INTERFACE8051
OBJECT MODULE PLACED IN Interface8051.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Interface8051.c OPTIMIZE(4,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <stdio.h>
3
4 #include "common.h"
5
6 void SetBaud(void)
7 {
8 1 u16 BaudSpeed;
9 1 u16 Tick;
10 1 u8 TickH,TickL;
11 1
12 1 TickH=0;
13 1 TickL=0;
14 1 // T2CON=0x01; // Timer2, Timer Mode, Clear TF2
15 1 T2CON=0x00;
16 1 TH2=0; // Load Timer2 start value
17 1 TL2=0;
18 1 while(P30); // Wait for Start bit, falling edge
19 1 TR2=1; // Start Timer2 (Count-up)
20 1 while(!TF2) // While Timer2 not overflow (TF2=1)
21 1 {
22 2 while( !TF2 && !P30 ); // Wait for rising edge Timer2 overflow
23 2 TickH=TH2; // Capture Timer2
24 2 TickL=TL2;
25 2 while( !TF2 && P30 ); // Wait for falling edge or Timer2 overflow
26 2 }
27 1 TR2=0; // Stop Timer2
28 1 TF2=0; // Clear overflow flag
29 1 Tick=(TickH<<8)+TickL; // Tick = duration from start bit to stop bit
30 1
31 1 BaudSpeed=65536.084-Tick*0.0417372+0.5; // Round to nearest integer
32 1
33 1 SCON = 0x52; // SCON: Mode 1, 8-bit UART, enable rcvr
34 1 RCAP2H= BaudSpeed>>8;
35 1 RCAP2L= BaudSpeed&0x00FF;
36 1 T2CON = 0x3C; // Timer 2, Mode baud rate generator
37 1 }
38
39 #if 0
bit breakFromLoop=0;
u16 coinCount=0;
void Int_Timer2(void) interrupt 5 using 0
{
ET2=0;
EXF2=0;
breakFromLoop=1;
TMOD |= 0x01; // Timer 0, Mode 1, 16-bit
TH0=0; // Load Initial value
TL0=0;
TF0=0; // Clear Overflow Flag
TR0=1; // Start Timer0
while(!P11);
TR0=0; // Stop Timer0
if (TF0) {
coinCount++; // Overflow Occur
C51 COMPILER V7.00 INTERFACE8051 03/23/2003 15:57:16 PAGE 2
printf("Coin = %d\n", coinCount);
TF0=0;
}
ET2=1;
}
#endif
62 #if 0
volatile u8 xdata spisr _at_ 0x2080;
volatile u8 xdata spicr _at_ 0x2084;
volatile u8 xdata spitr _at_ 0x208a;
volatile u8 xdata spirr _at_ 0x208e;
u8 spiStatus=0;
u16 countInInt=0;
bit IntFlag=0;
#endif
72 volatile u8 xdata dataInReg _at_ 0xa084;
73 volatile u8 xdata addrZero _at_ 0x0051;
74
75 void main(void)
76 {
77 1 u16 i=0;
78 1 u8 xdata *x=0;
79 1 u16 j;
80 1
81 1 EA=1;
82 1
83 1 // EX0=1; //enable interrupt 0
84 1 // P33=1;
85 1 // P33=0; //Reset CPLD
86 1 // P33=1;
87 1 P10=1;
88 1 P10=1;
89 1 for(i=0;i<50;i++);
90 1 P10=0;
91 1 P10=0;
92 1 P10=1;
93 1 SetBaud();
94 1 // ET2=1; //Enable Timer2 interrupt
95 1 printf("RUN\n");
96 1 #if 0
P34=1; //CS of MMC much be high
while (spisr&0x20);
printf("Bus Busy\n");
spicr=0xdf;
spitr=0x55; //dummy data for gen 80 clk
spicr=0xff; //start transfer
while(countInInt<3) {
if (IntFlag) spitr=0x55;
IntFlag=0;
}
// while(countInInt<3) spitr=0xff;
spicr=0x00; //stop transfer
// while(1) {
if(spiStatus) printf("SPI Status =%bx\n",spiStatus);
if(countInInt) printf("Enter %u times\n",countInInt);
// }
C51 COMPILER V7.00 INTERFACE8051 03/23/2003 15:57:16 PAGE 3
#endif
119 1 // while(1) addrZero=0x00;
120 1 for(j=0;j<256;j++) {
121 2 printf("j=%d\r",j);
122 2 for(i=0x0000;i<0x8000;i++) {
123 3 dataInReg=0x51;
124 3 x[i]=j;
125 3 x[i+1]=j+1;
126 3 x[i+2]=j+2;
127 3 x[i+3]=j+3;
128 3 if(x[i]!=j) {
129 4 printf("Memory error at %x\n",i);
130 4 }
131 3 // getchar();
132 3 }
133 2 }
134 1
135 1 // ET2=1; //Enable Timer2 interrupt
136 1 }
137 #if 0
void Int_Ext_0(void) interrupt 0 using 1
{
EX0=0;
spiStatus=spisr;
countInInt++;
if(countInInt) printf("Enter %u times\n",countInInt);
IntFlag=1;
EX0=1;
}
#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 364 ----
CONSTANT SIZE = 31 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
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 + -