📄 mcard.lst
字号:
ARM COMPILER V2.54a, MCARD 04/09/07 10:03:17 PAGE 1
ARM COMPILER V2.54a, COMPILATION OF MODULE MCARD
OBJECT MODULE PLACED IN MCARD.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe MCARD.C THUMB BROWSE DEBUG TABS(4)
stmt level source
1 #include<MCARD.H>
2 #include "config.h"
3 #include "lpclib.h"
4
5 /*******************************************************************************************
6 void ram_init(void)
7 描述:标志位清0
8 ********************************************************************************************/
9 void ram_init(void)
10 {
11 1 unsigned char i;
12 1 bitcount3=0;
13 1 bitcount2=0;
14 1 bitcount1=0;
15 1 rnum3=0;
16 1 rnum2=0;
17 1 rnum1=0;
18 1 readdat_num=0;
19 1 savdat3=0xff;
20 1 savdat2=0xff;
21 1 savdat1=0xff;
22 1 temp_h_byte=0;
23 1 temp_l_byte=0;
24 1 for(i=0;i<MAX_TRACK1_LEN;i++)Track1buf[i]=0xff;
25 1 for(i=0;i<MAX_TRACK2_LEN;i++)Track2buf[i]=0xff;
26 1 for(i=0;i<MAX_TRACK3_LEN;i++)Track3buf[i]=0xff;
27 1 }
28 //------------------------------------------------------------------------------------------
29 // 外部中断2
30 // void IRQ_Eint2 (void)__irq
31 //------------------------------------------------------------------------------------------
32 void IRQ_Eint2 (void)__irq
33 {
34 1 savdat1=(savdat1&0xfe)|((IO1PIN&0x00200000)>>21);
35 1 if(bitcount1<7)
36 1 {
37 2 savdat1<<=1;
38 2 bitcount1++;
39 2 }
40 1 else {
41 2 bitcount1=0;
42 2 Track1buf[rnum1]=~savdat1;
43 2 if(rnum1<MAX_TRACK1_LEN)rnum1++;
44 2 savdat1=0xff;
45 2 }
46 1 EXTINT = 0x04;
47 1 VICVectAddr = 0;
48 1 }
49 //------------------------------------------------------------------------------------------
50 // 外部中断3
51 // void IRQ_Eint3 (void)__irq
52 //------------------------------------------------------------------------------------------
53 void IRQ_Eint3 (void)__irq
54 {
55 1 savdat3=(savdat3&0xfe)|((IO1PIN&0x20000000)>>29);
56 1 if(bitcount3<7)
57 1 {
58 2 savdat3<<=1;
59 2 bitcount3++;
ARM COMPILER V2.54a, MCARD 04/09/07 10:03:17 PAGE 2
60 2 }
61 1 else
62 1 {
63 2 bitcount3=0;
64 2 Track3buf[rnum3]=~savdat3;
65 2 if(rnum3<MAX_TRACK3_LEN)rnum3++;
66 2 savdat3=0xff;
67 2 LED_R_OFF();
68 2 }
69 1 EXTINT = 0x08;
70 1 VICVectAddr = 0;
71 1 }
72 //------------------------------------------------------------------------------------------
73 // 捕获中断1
74 //void IRQ_TIME1 (void)__irq
75 //------------------------------------------------------------------------------------------
76 void IRQ_TIME1 (void)__irq
77 {
78 1 T1IR= 1<<6;
79 1 savdat2=(savdat2&0xfe)|((IO1PIN&0x40000000)>>30);
80 1 if(bitcount2<7)
81 1 {
82 2 savdat2<<=1;
83 2 bitcount2++;
84 2 }
85 1 else
86 1 {
87 2 bitcount2=0;
88 2 Track2buf[rnum2]=~savdat2;
89 2 if(rnum2<MAX_TRACK2_LEN)rnum2++;
90 2 savdat2=0xff;
91 2 }
92 1 VICVectAddr = 0;
93 1 }
94 /**********************************************************************************************
95 void dat_format(void)
96 描述:将不足7位的数据位格式化成正常数据
97 *********************************************************************************************/
98 void dat_format(void)
99 {
100 1 if(bitcount1!=0)
101 1 {
102 2 bitcount1=(8-bitcount1); //第一磁道
103 2 savdat1<<=bitcount1;
104 2 Track1buf[rnum1]=~savdat1;//当数据不足8位时则数据的低位补1
105 2 rnum1++;
106 2 }
107 1 if(bitcount2!=0)
108 1 {
109 2 bitcount2=(8-bitcount2); //第二磁道
110 2 savdat2<<=bitcount2;
111 2 Track2buf[rnum2]=~bitcount2;//当数据不足8位时则数据的低位补1
112 2 rnum2++;
113 2 }
114 1
115 1 if(bitcount3!=0)
116 1 {
117 2 bitcount3=(8-bitcount3); //第三磁道
118 2 savdat3<<=bitcount3;
119 2 Track3buf[rnum3]=~savdat3;//当数据不足8位时则数据的低位补1
120 2 rnum3++;
121 2 }
122 1 }
123 /*******************************************************************************************
124 函数原型:byte judge_readstatus_tr1(byte *tmprecord,byte tmplength)
125 功能:对一轨的数据进行解码
ARM COMPILER V2.54a, MCARD 04/09/07 10:03:17 PAGE 3
126 参数说明:tmprecord存放未解码的数据的缓冲区首址,tmplength存放未解码的数据的长度
127 ********************************************************************************************/
128 unsigned char judge_readstatus_tr1 (unsigned char *tmprecord,unsigned char tmplength)
129 {
130 1 static unsigned char tmpnum;
131 1 static unsigned char k;
132 1 static unsigned char m;
133 1 static unsigned char tmpLRC;
134 1 static unsigned char byte_num ;
135 1 static unsigned char dat_tmp;
136 1 tmpnum=tmplength;
137 1 byte_num=0;
138 1 FLAG_SS=0;
139 1 FLAG_ES=0;
140 1 FLAG_BRC=1;
141 1 FLAG_LRC=0;
142 1 /**********************************找包头循环体***************************************/
143 1 while(1)
144 1 {
145 2 if((!FLAG_SS)&&(tmprecord[tmpnum]!=0x00)&&(tmprecord[tmpnum-1]!=0x00))
146 2 {
147 3 temp_h_byte=tmprecord[tmpnum-1];
148 3 temp_l_byte=tmprecord[tmpnum];
149 3 for(k=0;k<8;k++)
150 3 {
151 4 if((temp_l_byte&0x7f)==0x45) //45 is stx.
152 4 {
153 5 FLAG_SS=1; //STX is ok.
154 5 tmpLRC=0x05; //计算LRC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -