📄 att7027.lst
字号:
C51 COMPILER V7.20 ATT7027 04/14/2007 11:59:58 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE ATT7027
OBJECT MODULE PLACED IN F:\ATT7025\ATT7027.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\ATT7025\ATT7027.c BROWSE DEBUG OBJECTEXTEND PRINT(.\ATT7027.lst) SRC(.\A
-TT7027.SRC)
line level source
1 #include <ATT7027.H>
2 #include <MAIN.H>
3 // #include <stddef.h>
4 void Flash_Write_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n);
5 void Flash_Read_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n);
6 void WriteCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n);
7 void ReadATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n);
8 void ReadCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n);
9 void EMU_Parameter_change1();
10 /*******************************************************************
11 写FLASH数据
12 函数原型: void Flash_Write_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
13 功能: 将要写的数据写到FLASH中
14 输入: addr 地址,n个数,mt_data存放RAM的指针
15 输出:
16 ********************************************************************/
17 void Flash_Write_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
18 {
19 1 unsigned char i,ADDRL,ADDRH,TEMP;
20 1 CFMCFG|=0x04;// 允许系统调用
21 1 for(i=0;i<n;i++)
22 1 {
23 2 ADDRL=addr;
24 2 ADDRH=addr>>4;
25 2 TEMP=*mt_data;
26 2 BWPR=0xC3;//使能写PMOD[1:0]操作
27 2 BWPR=0x9B;//开启所有受保护位的写使能
28 2 /* #pragma asm
29 2 MOV R6,ADDRH //指定要擦除的页的高地址
30 2 MOV R7,ADDRL //指定要擦除的页的低地址
31 2 MOV R3,1 //指定要擦除DATA FLASH
32 2 LCALL 0FFD7H
33 2 MOV DPTRH0,ADDLH
34 2 MOV DPTRL0,ADDRL
35 2 MOV A,TEMP;
36 2 LCALL 0FFD9H
37 2 #pragma endasm */
38 2 addr=addr+1;
39 2 mt_data=mt_data+1;
40 2 }
41 1 }
42 /*******************************************************************
43 读FLASH数据
44 函数原型:void Flash_Read_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
45 功能: 读FLASH数据放到mt_data指针指向要存放的地址中
46 输入: addr子地址,n个数,*mt_data要存放的指针
47 输出:
48 ********************************************************************/
49 void Flash_Read_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
50 {
51 1 unsigned char i;
52 1 for(i=0;i<n;i++)
53 1 {
54 2 *mt_data=CBYTE[addr];
C51 COMPILER V7.20 ATT7027 04/14/2007 11:59:58 PAGE 2
55 2 addr=addr+1;
56 2 mt_data=mt_data+1;
57 2 }
58 1 }
59
60
61
62 /****************************************************************************
63 写数据到校表寄存器中
64 函数原型:void WriteCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n)
65 功能: 数据放到mt_data指针指向要存放的地址中
66 输入: addr子地址,n个数,*mt_data要存放的指针
67 输出 comm:the val which written to the registers.
68 writes Calibration registers at att7027 addr:the address of the first register.
69 ******************************************************************************/
70 void WriteCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n)
71 {
72 1 unsigned char i,delay;
73 1 EPADR=0xA6;//ECR writes Calibration registers寄存器写保护使能
74 1 for(i=0;i<n;i++)
75 1 {
76 2 ECADR=addr; //write address
77 2 delay=10;
78 2 while(delay>0) delay--; // wait 4.8us
79 2 ECDATH=*(mt_data+2*i);//写入数据的高8位如果单字节数据可以忽略此操作
80 2 ECDATL=*(mt_data+1+2*i);//写入数据的低8位
81 2 addr=addr+1; //下一个校表参数
82 2 }
83 1 EPADR=0xA9; //ECR writes Calibration registers寄存器写保护禁止
84 1 }
85 /***********************************************************************
86 读电表寄存器数据
87 函数原型:void ReadATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
88 功能: 读电表寄存器数据放到mt_data指针指向要存放的地址中
89 输入: addr子地址,n个数,*mt_data要存放的指针
90 输出: This subroutine functions as reading n*bits registers from att7027.
91 Considering the compatibilities, reading the 24bits register as
92 3*8bits, and reads 8bits once.
93 ***********************************************************************/
94
95 void ReadATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n)//*mt_data=xxxxxx00 n=3
96 {
97 1 unsigned char delay,i=0;
98 1 for(i=0;i<n;i++)
99 1 {
100 2 EPADR=addr; //write address
101 2 delay=10;
102 2 while(delay>0) delay--; // wait 4.8us
103 2 *(mt_data+3*i)=0;
104 2 *(mt_data+1+3*i)=EPDATH;//读数据的高位如果寄存器为2字节,EPDATH 为符号扩展位
105 2 *(mt_data+2+3*i)=EPDATM;//读数据的中间8位
106 2 *(mt_data+3+3*i)=EPDATL;//读数据的低8位
107 2 addr=addr+1;
108 2 }
109 1 }
110 /****************************************************************************
111 读电表校验寄存器数据
112 函数原型:void ReadCALATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
113 功能: 读电表校验寄存器数据放到mt_data指针指向要存放的地址中
114 输入: addr子地址,n个数,*mt_data要存放的指针
115 Read Calibration registers at att7027
116 addr:the address of the first register.
C51 COMPILER V7.20 ATT7027 04/14/2007 11:59:58 PAGE 3
117 comm:the val which written to the registers.
118 ******************************************************************************/
119 void ReadCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n)//*mt_data=xxxxxx00 n=3
120 {
121 1 unsigned char delay,i=0;
122 1 for(i=0;i<n;i++)
123 1 {
124 2 EPADR=addr; //write address
125 2 delay=10;
126 2 while(delay>0) delay--; // wait 4.8us
127 2 *(mt_data+2*i)=ECDATH;//读数据的高8位如果单字节数据可以忽略此操作
128 2 *(mt_data+1+2*i)=ECDATL;//读数据的低8位
129 2 addr=addr+1; //下一个校表参数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -