📄 icrdwr.lst
字号:
C51 COMPILER V8.08 ICRDWR 09/21/2008 11:28:48 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE ICRDWR
OBJECT MODULE PLACED IN ICRdWr.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ICRdWr.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG8253.H> //头文件
2 #include <stdio.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 #define BUFFER1Write 0x84 // BUFFER1写指令代码
8 #define BUFFER1ToMain 0x88 //由缓冲区写主内存指令代码
9 #define MainPageRead 0xD2 //主内存页读指令代码
10 #define StatusRead 0xD7 //状态寄存器读指令代码
11
12 #define WriteICMaxLen 8 //写IC卡芯片最大长度
13 #define ReadICMaxLen 8 //读IC卡芯片最大长度
14
15 uint PageStartAddr; //页中起始字节地址
16 uint PageAddr; //页地址,16位中低9位为有效位
17 uint BufStartAddr; // BUFFER中起始字节地址,16位中低11位为有效位
18 uchar WriteIC[WriteICMaxLen]; //要写入IC卡的数据
19 uchar ReadIC[ReadICMaxLen]; //要从IC卡中读出的数据
20
21 void Delay(uint t); //延时函数
22 void SPIWrite(uchar dat); //写数据寄存器函数
23 uchar ICStatus(void); //读IC卡状态函数
24 void WriteICFun(uchar dat); //写IC卡芯片函数
25 uchar ReadICFun(); //读IC卡芯片函数
26
27 void main() //主函数
28 {
29 1 uchar i;
30 1 uchar status;
31 1 uchar Select_Menu; //功能选择
32 1
33 1 SCON=0x50; //初始化串行口模式1
34 1 TMOD=0x20; //初始化T1为定时功能,模式2
35 1 PCON=0x80; //设置SMOD=1
36 1 TL1=0xF4; //波特率4800bit/s,初值
37 1 TH1=0xF4;
38 1
39 1 TR1 = 1; //启动T1
40 1 TI = 1; //启动发送
41 1
42 1 P1_0 = 1;
43 1 SPCR=0x5d; //SPI控制寄存器
44 1 for (i=0;i<8;i++) //产生数据,用于写IC卡
45 1 {
46 2 WriteIC[i]=i;
47 2 }
48 1
49 1 while(1)
50 1 {
51 2 printf("A/D Converter MAX197 Control!");
52 2 printf (" Select Control Menu Option\n"); //菜单信息
53 2 printf (" 0. Write Data to IC Card.\n");
54 2 printf (" 1. Read Data from IC Card.\n");
55 2 printf (" 2. Read status of IC Card.\n");
C51 COMPILER V8.08 ICRDWR 09/21/2008 11:28:48 PAGE 2
56 2 printf (" 3. Reset IC Card.\n");
57 2 printf (" 4. EXIT.\n");
58 2 printf (" Please Input Menu Option:\n");
59 2
60 2 Select_Menu = _getkey(); //从键盘输入选择数字
61 2 switch(Select_Menu)
62 2 {
63 3 case '0': //写IC卡
64 3 printf ("\n You Select 0. Write Data to IC Card.\n");
65 3
66 3 BufStartAddr = 0; // BUFFER中起始字节地址
67 3 PageStartAddr = 0; //页起始地址
68 3 PageAddr = 0; //页地址
69 3
70 3 for (i=0;i<WriteICMaxLen;i++) //将数组WriteIC写入IC卡
71 3 {
72 4 WriteICFun(WriteIC[i]);
73 4 Delay(2); //延时
74 4 }
75 3 printf("Data have write into IC Card.\n");
76 3 break;
77 3 case '1': //读IC卡
78 3 printf ("\n You Select 1. Read Data from IC Card.\n");
79 3
80 3 BufStartAddr = 0; // BUFFER中起始字节地址
81 3 PageStartAddr = 0; //页起始地址
82 3 PageAddr = 0; //页地址
83 3
84 3 for (i=0;i<ReadICMaxLen;i++) //循环读IC卡
85 3 {
86 4 ReadIC[i] = ReadICFun();
87 4 Delay(2); //延时
88 4 }
89 3 printf("Data have read from IC Card.\n");
90 3 break;
91 3 case '2': //读IC卡状态
92 3 printf ("\n You Select 2. Read status of IC Card.\n");
93 3
94 3 status=ICStatus(); //读IC卡状态
95 3 printf("IC Card Status=%x\n",status);
96 3 break;
97 3 case '3': //复位IC卡
98 3 printf ("\n You Select 3. Reset IC Card.\n");
99 3 P1_0=0; //复位
100 3 Delay(5);
101 3 P1_0 = 1;
102 3 SPCR=0x5d; //重置SPI控制寄存器
103 3 printf("IC Card Reset!\n");
104 3 break;
105 3 case '4': //退出程序
106 3 printf ("\n You Select 4. Exit\n");
107 3 goto Exit; //转向Exit标号处
108 3 break;
109 3 default:
110 3 printf ("\n Error: Please Select Right Menu Option\n");
111 3 break;
112 3 };
113 2 }
114 1 Exit: printf("Exit the program!"); //退出
115 1 }
116
117
C51 COMPILER V8.08 ICRDWR 09/21/2008 11:28:48 PAGE 3
118
119
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -