📄 writefile.lst
字号:
C51 COMPILER V7.20 WRITEFILE 11/15/2005 18:46:55 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE WRITEFILE
OBJECT MODULE PLACED IN WriteFile.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil Uvision V7.20\C51\BIN\C51.EXE WriteFile.C BROWSE DEBUG OBJECTEXTEND SYMBOLS
line level source
1 //*************************************************************************************************
2 // Module Name : WriteFile.C
3 // CreateDate : 2005-05-09
4 // ModifData : 2005-05-09
5 // Description :
6 // Author : 李远正
7 // Version : V1.0
8 //*************************************************************************************************
9 //
10 // U盘文件读写模块,
11 // MCS-51单片机C语言程序, 仅适用于V2.5及以上版本的模块
12 // 因为使用U盘文件读写模块而不是使用U盘文件级子程序库,所以占用较少的单片机资源
13
14 #include <C8051F020.H>
15 #include <string.h>
16 #include <stdio.h>
17 #include "Function.H"
18 #include "12C887.H" // Save temporary data
19 #include "USBP.H"
20 #include "WriteFile.H"
21
22 //=================================================================================================
23 // 显示U盘操作的进度子程序
24 void DisplayGuage ( unsigned char guage )
25 {
26 1 GUAGE = guage;
27 1 SCREEN = 51; // 进入 51 屏幕,显示U盘操作进度
28 1 Display( );
29 1 }
30
31 //-------------------------------------------------------------------------------------------------
32 // 检查操作状态,如果错误则显示错误代码并停机,应该替换为实际的处理措施
33 void mStopIfError( unsigned char iError )
34 {
35 1 if ( iError == ERR_SUCCESS ) return; // 操作成功返回
36 1
37 1 SCREEN = 52; modifying = 1; // 进入 52 屏幕,显示错误
38 1 Display( );
39 1 }
40
41 //-------------------------------------------------------------------------------------------------
42 // 16位大端与小端格式的数据处理
43 unsigned short SwapUINT16( unsigned short d )
44 {
45 1 return( ( d << 8 ) & 0xFF00 | ( d >> 8 ) & 0xFF );
46 1 }
47
48 //=================================================================================================
49 // 向缓冲区写入要发送的数字
50 void mCopyNumberToBUF( unsigned char number )
51 {
52 1 WriteFileSize++; // 文件总大小
53 1 *buffer++ = number;
54 1 *buffer = '\0';
55 1 }
C51 COMPILER V7.20 WRITEFILE 11/15/2005 18:46:55 PAGE 2
56
57 //-------------------------------------------------------------------------------------------------
58 // 向缓冲区写入要发送的字符串
59 void mCopyCodeStringToBUF( unsigned char *CodeString )
60 {
61 1 for ( ; *CodeString!=0; ) // 遇到停止符\0结束
62 1 {
63 2 WriteFileSize++; // 文件总大小
64 2 *buffer++ = *CodeString++;
65 2 }
66 1 }
67
68 //-------------------------------------------------------------------------------------------------
69 // 向指定缓冲区写入数据块文件
70 // 要写入数据的缓冲区首地址: BufStart
71 // 记录文件数据的总大少 : TotalFileSize
72 // 记录数据写到缓冲区的位置: buffer
73 void WriteDataToBUF( unsigned char *BufStart )
74 {
75 1 unsigned char i, IronNumber;
76 1 unsigned int MetalDistance;
77 1 #define Distance MetalDistance // 节约一个变量单元
78 1
79 1 WriteFileSize = 0; // 写入文件数据数目清零
80 1 buffer = BufStart; // 指向缓冲区碎片数据(需要重新写入的)的末地址
81 1
82 1 if ( superaddition ) // 追加数据次数计数
83 1 {
84 2 mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A ); // 回车换行
85 2 mCopyCodeStringToBUF( "(数据追加)" );
86 2 mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A ); // 回车换行
87 2 }
88 1
89 1 mCopyCodeStringToBUF( "现在日期是 20" );
90 1 i = time_buf[6];
91 1 mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 ); mCopyNumberToBUF( '-' );
92 1 i = time_buf[5];
93 1 mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 ); mCopyNumberToBUF( '-' );
94 1 i = time_buf[4];
95 1 mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 );
96 1 mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A ); // 回车换行
97 1 mCopyCodeStringToBUF( "现在时间是 " );
98 1 i = time_buf[2];
99 1 mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 ); mCopyNumberToBUF( ':' );
100 1 i = time_buf[1];
101 1 mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 ); mCopyNumberToBUF( ':' );
102 1 i = time_buf[0];
103 1 mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 );
104 1 mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A ); // 回车换行
105 1
106 1 mCopyCodeStringToBUF( "“直道区”检测到铁片的数目为:" );
107 1 i = Read12C887RAM( IRON_NUMBER_RANGE ); // 从 12C887 中取出数据
108 1 mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 );
109 1 mCopyCodeStringToBUF( "(个)" );
110 1 mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A ); // 回车换行
111 1
112 1 IronNumber = i; // 检测铁片数目,确定存储数据量多少
113 1
114 1 if( IronNumber > 0 )
115 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -