www.pudn.com > 47651478keil51file.rar > shui_kong.LST
C51 COMPILER V7.06 SHUI_KONG 02/08/2007 15:19:46 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SHUI_KONG
OBJECT MODULE PLACED IN shui_kong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE shui_kong.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "jyj07.h"
2 #include "shui_kong.h"
3
4 extern byte ram_8255a_c; //8255a_c输出字节
5
6 //税务初始化程序,返回初始化状态
7 //0:初始化正常,1:
8 byte shuiwu_init()
9 {
10 1 byte err_type;
11 1 wait_sk_ready();
12 1 if(err_type==0)
13 1 {
14 2 err_type=hand_to_sk();
15 2 }
16 1 else
17 1 {
18 2 return(err_type);
19 2 }
20 1 if(err_type==0)
21 1 {
22 2 check_display();
23 2 }
24 1 return(err_type);
25 1 }
26 //*********************HAND_TO_SK***************
27 //功能: 和税控芯片握手,初始化稅控芯片工作方式
28 byte hand_to_sk()
29 {
30 1 word delay1;
31 1 bit tempbit1;
32 1 byte error_kind=0;
33 1 byte idata sk_hand_data[7]={0x06,0xa0,0xa3,CHUAN_BING,0,0,0};
34 1 byte *pskdata;
35 1 pskdata=sk_hand_data; //把数组给指针赋值
36 1
37 1 set_high_skh(); //设置skh状态
38 1 tempbit1=0;
39 1 for(delay1=0;delay1<10000;delay1++)
40 1 {
41 2 tempbit1=read_skh(); //读skh状态
42 2 if(tempbit1==1)
43 2 {
44 3 delay1=10000; //skh为高提前结束
45 3 }
46 2 set_high_skh();
47 2 } //skh为低说明没准备好
48 1 while(tempbit1==0)
49 1 {
50 2 error_kind=1;
51 2 disp_sk_err(error_kind);
52 2 }
53 1 for(delay1=0;delay1<10000;delay1++)
54 1 {
55 2 tempbit1=read_skl(); //读skl状态
C51 COMPILER V7.06 SHUI_KONG 02/08/2007 15:19:46 PAGE 2
56 2 if(tempbit1==1)
57 2 {
58 3 delay1=10000; //skl为高提前结束
59 3 }
60 2 }
61 1 while(tempbit1==0)
62 1 {
63 2 error_kind=2;
64 2 disp_sk_err(error_kind);
65 2 }
66 1 calc_shuzu_crc(pskdata); //计算数组的crc值,并赋给最后一个值
67 1
68 1 data_to_sk4562(pskdata); //通过4562与sk芯片握手
69 1 error_kind=check_sk_com(); //检查税控的执行情况
70 1 return(error_kind);
71 1 }
72 //设置skh状态
73 void set_high_skh()
74 {
75 1 P_SKH_SK=1;
76 1 }
77 void set_low_skh()
78 {
79 1 P_SKH_SK=0;
80 1 }
81 //读skh状态
82 bit read_skh()
83 {
84 1 bit tempbit;
85 1 tempbit=P_SKH_SK;
86 1 return(tempbit);
87 1 }
88 //读skl值
89 bit read_skl()
90 {
91 1 bit tempbit;
92 1 tempbit=0x01&CS_8255B_C; //8255b c口的最低位
93 1 return(tempbit);
94 1 }
95 //显示税控错误信息
96 void disp_sk_err(byte error_kind)
97 {
98 1 }
*** WARNING C280 IN LINE 96 OF SHUI_KONG.C: 'error_kind': unreferenced local variable
99 //通过4562给税控芯片送数据
100 void data_to_sk4562(byte *pskdata)
101 {
102 1 byte len;
103 1 byte i,j,k,y;
104 1 len=*pskdata; //数组第一个值为数组的长度
105 1 ram_8255a_c=ram_8255a_c | 0x03; //0000 0011
106 1 CS_8255A_C=ram_8255a_c; //税控时钟数据线都置高
107 1 for(i=0;i