📄 main.lst
字号:
C51 COMPILER V8.01 MAIN 08/07/2006 11:08:35 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Output\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE System\main.c BROWSE DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBOLS PRINT(.\Ou
-tput\main.lst) PREPRINT(.\Output\main.i) OBJECT(.\Output\main.obj)
line level source
1 #include <reg51.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 REG51.H
3 =1
4 =1 Header file for generic 80C51 and 80C31 microcontroller.
5 =1 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __REG51_H__
10 =1 #define __REG51_H__
11 =1
12 =1 /* BYTE Register */
13 =1 sfr P0 = 0x80;
14 =1 sfr P1 = 0x90;
15 =1 sfr P2 = 0xA0;
16 =1 sfr P3 = 0xB0;
17 =1 sfr PSW = 0xD0;
18 =1 sfr ACC = 0xE0;
19 =1 sfr B = 0xF0;
20 =1 sfr SP = 0x81;
21 =1 sfr DPL = 0x82;
22 =1 sfr DPH = 0x83;
23 =1 sfr PCON = 0x87;
24 =1 sfr TCON = 0x88;
25 =1 sfr TMOD = 0x89;
26 =1 sfr TL0 = 0x8A;
27 =1 sfr TL1 = 0x8B;
28 =1 sfr TH0 = 0x8C;
29 =1 sfr TH1 = 0x8D;
30 =1 sfr IE = 0xA8;
31 =1 sfr IP = 0xB8;
32 =1 sfr SCON = 0x98;
33 =1 sfr SBUF = 0x99;
34 =1
35 =1
36 =1 /* BIT Register */
37 =1 /* PSW */
38 =1 sbit CY = 0xD7;
39 =1 sbit AC = 0xD6;
40 =1 sbit F0 = 0xD5;
41 =1 sbit RS1 = 0xD4;
42 =1 sbit RS0 = 0xD3;
43 =1 sbit OV = 0xD2;
44 =1 sbit P = 0xD0;
45 =1
46 =1 /* TCON */
47 =1 sbit TF1 = 0x8F;
48 =1 sbit TR1 = 0x8E;
49 =1 sbit TF0 = 0x8D;
50 =1 sbit TR0 = 0x8C;
51 =1 sbit IE1 = 0x8B;
52 =1 sbit IT1 = 0x8A;
53 =1 sbit IE0 = 0x89;
C51 COMPILER V8.01 MAIN 08/07/2006 11:08:35 PAGE 2
54 =1 sbit IT0 = 0x88;
55 =1
56 =1 /* IE */
57 =1 sbit EA = 0xAF;
58 =1 sbit ES = 0xAC;
59 =1 sbit ET1 = 0xAB;
60 =1 sbit EX1 = 0xAA;
61 =1 sbit ET0 = 0xA9;
62 =1 sbit EX0 = 0xA8;
63 =1
64 =1 /* IP */
65 =1 sbit PS = 0xBC;
66 =1 sbit PT1 = 0xBB;
67 =1 sbit PX1 = 0xBA;
68 =1 sbit PT0 = 0xB9;
69 =1 sbit PX0 = 0xB8;
70 =1
71 =1 /* P3 */
72 =1 sbit RD = 0xB7;
73 =1 sbit WR = 0xB6;
74 =1 sbit T1 = 0xB5;
75 =1 sbit T0 = 0xB4;
76 =1 sbit INT1 = 0xB3;
77 =1 sbit INT0 = 0xB2;
78 =1 sbit TXD = 0xB1;
79 =1 sbit RXD = 0xB0;
80 =1
81 =1 /* SCON */
82 =1 sbit SM0 = 0x9F;
83 =1 sbit SM1 = 0x9E;
84 =1 sbit SM2 = 0x9D;
85 =1 sbit REN = 0x9C;
86 =1 sbit TB8 = 0x9B;
87 =1 sbit RB8 = 0x9A;
88 =1 sbit TI = 0x99;
89 =1 sbit RI = 0x98;
90 =1
91 =1 #endif
2 #include <absacc.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 ABSACC.H
3 =1
4 =1 Direct access to 8051, extended 8051 and Philips 80C51MX memory areas.
5 =1 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __ABSACC_H__
10 =1 #define __ABSACC_H__
11 =1
12 =1 #define CBYTE ((unsigned char volatile code *) 0)
13 =1 #define DBYTE ((unsigned char volatile data *) 0)
14 =1 #define PBYTE ((unsigned char volatile pdata *) 0)
15 =1 #define XBYTE ((unsigned char volatile xdata *) 0)
16 =1
17 =1 #define CWORD ((unsigned int volatile code *) 0)
18 =1 #define DWORD ((unsigned int volatile data *) 0)
19 =1 #define PWORD ((unsigned int volatile pdata *) 0)
20 =1 #define XWORD ((unsigned int volatile xdata *) 0)
21 =1
22 =1
23 =1 #ifdef __CX51__
C51 COMPILER V8.01 MAIN 08/07/2006 11:08:35 PAGE 3
=1 #define FVAR(object, addr) (*((object volatile far *) (addr)))
=1 #define FARRAY(object, base) ((object volatile far *) (base))
=1 #define FCVAR(object, addr) (*((object const far *) (addr)))
=1 #define FCARRAY(object, base) ((object const far *) (base))
=1 #else
29 =1 #define FVAR(object, addr) (*((object volatile far *) ((addr)+0x10000L)))
30 =1 #define FCVAR(object, addr) (*((object const far *) ((addr)+0x810000L)))
31 =1 #define FARRAY(object, base) ((object volatile far *) ((base)+0x10000L))
32 =1 #define FCARRAY(object, base) ((object const far *) ((base)+0x810000L))
33 =1 #endif
34 =1
35 =1 #endif
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define KEYPORT P1
6
7 #define LCDCOM XBYTE[0x0008] //LCD命令寄存器
8 #define LCDDATA XBYTE[0x0009] //LCD数据寄存器
9
10 #define CDPA XBYTE[0x0004] //8255 PORT A, harddisk D0-D7
11 #define CDPB XBYTE[0x0005] //8255 PORT B, harddisk D8-D15
12 #define CDPC XBYTE[0x0006] //8255 PORT C,harddisk address
13 #define CDCOM XBYTE[0x0007] //8255 命令寄存器
14
15 #define FILE0 0x00 //硬盘数据寄存器
16 #define FILE1 0x01 //错误/特征寄存器
17 #define FILE2 0x02 //扇区数寄存器
18 #define FILE3 0x03 //扇区号寄存器
19 #define FILE4 0x04 //柱面号寄存器L
20 #define FILE5 0x05 //柱面号寄存器H
21 #define FILE6 0x06 //驱动器/磁头寄存器
22 #define FILE7 0x07 //状态/命令寄存器
23
24 static uchar code LCD1[16]= "TOPLOW DESIGN ";
25 static uchar code LCD2[16]= "Copyright(C)2004";
26 static uchar code ERROR[16]="ERROR ";
27 static uchar code PASS[16]= "PASS ";
28
29 uchar buffer0,buffer1;
30 uchar buffer[16];
31 uchar STATUS;
32 ///////////////////位设置///////////////////////////
33 sbit BFLAG=ACC^7;
34 sbit BSY=ACC^7;
35 sbit DRDY=ACC^6;
36 sbit DRQ=ACC^3;
37 sbit ERR=ACC^0;
38 sbit RESET=P3^5;
39 sbit READ=P3^0;
40 sbit WRITE=P3^1;
41 sbit ILT=ACC^0;
42 sbit INTRQ=P3^3;
43 /************************************************************
44 * D7 D6 D5 D4 D3 D2 D1 D0 *
45 BSY DRDY DWF DSC DRQ CORR IDX ERR *
46 BSY:驱动器忙; *
47 DRDY:驱动器准备好; *
48 DWF:驱动器写失败; *
49 DSC:寻道结束; *
50 DRQ:请求服务,驱动器希望通过数据寄存器与CPU交换一字节数据;*
51 CORR:当可以纠正的读错误发生时,该位置1,数据传输将继续进行 *
52 IDX:收到综引信号; *
C51 COMPILER V8.01 MAIN 08/07/2006 11:08:35 PAGE 4
53 ERR:命令执行出错。 *
54 *************************************************************/
55
56 /*******************************************************
57 *函数名称:void delay(uint time) *
58 *函数用途:延迟函数 *
59 ********************************************************/
60 void delay(uint time)
61 {
62 1 uint i,j;
63 1 for(i=0;i<time;i++)
64 1 for(j=0;j<255;j++);
65 1 }
66
67 /*******************************************************
68 *函数名称:void putch(unsigned char ch) *
69 *函数用途:串口发送程序 *
70 ********************************************************/
71 void putch(unsigned char ch)
72 {
73 1 SBUF=ch;
74 1 TI=0;
75 1 while(!TI);
76 1 }
77
78 /*******************************************************
79 *函数名称:unsigned char getch(void) *
80 *函数用途:串口接收程序 *
81 ********************************************************/
82 unsigned char getch(void)
83 {
84 1 uchar temp;
85 1 while(!RI);
86 1 temp=SBUF;
87 1 RI=0;
88 1 return(temp);
89 1 }
90
91
92 /*******************************************************
93 *函数名称:void wait(void) *
94 *函数用途:LCD忙等待 *
95 ********************************************************/
96 void wait(void)
97 {
98 1 do{ACC=LCDCOM;}
99 1 while(BFLAG==1);
100 1 }
101
102 /*******************************************************
103 *函数名称:void IniLcd(void) *
104 *函数用途:LCD初始化函数 *
105 ********************************************************/
106 void IniLcd(void)
107 {
108 1 LCDCOM=0x38;
109 1 wait();
110 1 LCDCOM=0x08;
111 1 wait();
112 1 LCDCOM=0x01;
113 1 wait();
114 1 LCDCOM=0x06;
C51 COMPILER V8.01 MAIN 08/07/2006 11:08:35 PAGE 5
115 1 wait();
116 1 LCDCOM=0x0c;
117 1 wait();
118 1 }
119 /***********************************************************************
120 *函数名称:void LcdDis(uchar FL,uchar Lcd1[16],uchar SL,uchar Lcd2[16]) *
121 *函数用途:液晶显示函数 *
122 ************************************************************************/
123 void LcdDis(uchar FL,uchar Lcd1[16],uchar SL,uchar Lcd2[16])
124 {
125 1 uchar k;
126 1
127 1 LCDCOM=FL|0x80;
128 1 wait();
129 1 for(k=0;k<16;k++){
130 2 LCDDATA=Lcd1[k];
131 2 wait();
132 2 }
133 1 LCDCOM=SL|0xc0;
134 1 wait();
135 1 for(k=0;k<16;k++){
136 2 LCDDATA=Lcd2[k];
137 2 wait();
138 2 }
139 1 }
140
141 /*******************************************************
142 *函数名称:void ReadReg(uchar ADD) *
143 *函数用途:读硬盘非数据寄存器内容,并将结果返回 *
144 ********************************************************/
145 void ReadReg(uchar ADD)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -