Added Tinfilling program
This commit is contained in:
parent
f787344bdf
commit
865d4f9435
47 changed files with 19681 additions and 1 deletions
|
|
@ -1 +0,0 @@
|
||||||
Some text
|
|
||||||
|
|
@ -0,0 +1,106 @@
|
||||||
|
C51 COMPILER V9.60.7.0 4X4_KEY 07/10/2026 17:02:31 PAGE 1
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE 4X4_KEY
|
||||||
|
OBJECT MODULE PLACED IN 4x4_key.OBJ
|
||||||
|
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4x4_key.c BROWSE DEBUG OBJECTEXTEND
|
||||||
|
|
||||||
|
line level source
|
||||||
|
|
||||||
|
1 //#include<REGX55.h> //including sfr registers for ports of the controller
|
||||||
|
2 //#include <SST89x5x4.H>
|
||||||
|
3 //#include <REGF51RC.H>
|
||||||
|
4
|
||||||
|
5 //#include <REGX55.H>
|
||||||
|
6 #include <REG51.H>
|
||||||
|
7 #include<utility.h>
|
||||||
|
8 #include <4x4_key.h>
|
||||||
|
9
|
||||||
|
10 //Keypad Connections
|
||||||
|
11 sbit R1 = P0^0;
|
||||||
|
12 sbit R2 = P0^1;
|
||||||
|
13 sbit R3 = P0^2;
|
||||||
|
14 sbit R4 = P0^3;
|
||||||
|
15 sbit C1 = P0^4;
|
||||||
|
16 sbit C2 = P0^5;
|
||||||
|
17 sbit C3 = P0^6;
|
||||||
|
18 sbit C4 = P0^7;
|
||||||
|
19 //==============================================================================
|
||||||
|
20 unsigned char Read_Keypad(void)
|
||||||
|
21 {
|
||||||
|
22 1 C1=1;
|
||||||
|
23 1 C2=1;
|
||||||
|
24 1 C3=1;
|
||||||
|
25 1 C4=1;
|
||||||
|
26 1 R1=0;
|
||||||
|
27 1 R2=1;
|
||||||
|
28 1 R3=1;
|
||||||
|
29 1 R4=1;
|
||||||
|
30 1 /*if(C1==0){delay(100);while(C1==0);return '7';}
|
||||||
|
31 1 if(C2==0){delay(100);while(C2==0);return '8';}
|
||||||
|
32 1 if(C3==0){delay(100);while(C3==0);return '9';}
|
||||||
|
33 1 if(C4==0){delay(100);while(C4==0);return 'C';} */
|
||||||
|
34 1
|
||||||
|
35 1 if(C1==0)return 0x01;
|
||||||
|
36 1 if(C2==0)return 0x02;
|
||||||
|
37 1 if(C3==0)return 0x03;
|
||||||
|
38 1 if(C4==0)return 'A';
|
||||||
|
39 1 R1=1;
|
||||||
|
40 1 R2=0;
|
||||||
|
41 1 R3=1;
|
||||||
|
42 1 R4=1;
|
||||||
|
43 1 /*if(C1==0){delay(100);while(C1==0);return '4';}
|
||||||
|
44 1 if(C2==0){delay(100);while(C2==0);return '5';}
|
||||||
|
45 1 if(C3==0){delay(100);while(C3==0);return '6';}
|
||||||
|
46 1 if(C4==0){delay(100);while(C4==0);return 'B';} */
|
||||||
|
47 1
|
||||||
|
48 1 if(C1==0)return 0x04;
|
||||||
|
49 1 if(C2==0)return 0x05;
|
||||||
|
50 1 if(C3==0)return 0x06;
|
||||||
|
51 1 if(C4==0)return 'B';
|
||||||
|
52 1 R1=1;
|
||||||
|
53 1 R2=1;
|
||||||
|
54 1 R3=0;
|
||||||
|
55 1 R4=1;
|
||||||
|
C51 COMPILER V9.60.7.0 4X4_KEY 07/10/2026 17:02:31 PAGE 2
|
||||||
|
|
||||||
|
56 1 /*if(C1==0){delay(100);while(C1==0);return '1';}
|
||||||
|
57 1 if(C2==0){delay(100);while(C2==0);return '2';}
|
||||||
|
58 1 if(C3==0){delay(100);while(C3==0);return '3';}
|
||||||
|
59 1 if(C4==0){delay(100);while(C4==0);return 'A';} */
|
||||||
|
60 1
|
||||||
|
61 1 if(C1==0)return 0x07;
|
||||||
|
62 1 if(C2==0)return 0x08;
|
||||||
|
63 1 if(C3==0)return 0x09;
|
||||||
|
64 1 if(C4==0)return 'C';
|
||||||
|
65 1 R1=1;
|
||||||
|
66 1 R2=1;
|
||||||
|
67 1 R3=1;
|
||||||
|
68 1 R4=0;
|
||||||
|
69 1 /*if(C1==0){delay(100);while(C1==0);return '*';}
|
||||||
|
70 1 if(C2==0){delay(100);while(C2==0);return '0';}
|
||||||
|
71 1 if(C3==0){delay(100);while(C3==0);return '#';}
|
||||||
|
72 1 if(C4==0){delay(100);while(C4==0);return 'D';} */
|
||||||
|
73 1
|
||||||
|
74 1 if(C1==0)return '*';
|
||||||
|
75 1 if(C2==0)return 0x00;
|
||||||
|
76 1 if(C3==0)return '#';
|
||||||
|
77 1 if(C4==0)return 'D';
|
||||||
|
78 1
|
||||||
|
79 1 return 'x';
|
||||||
|
80 1 }
|
||||||
|
81
|
||||||
|
|
||||||
|
|
||||||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||||
|
CODE SIZE = 139 ----
|
||||||
|
CONSTANT SIZE = ---- ----
|
||||||
|
XDATA SIZE = ---- ----
|
||||||
|
PDATA SIZE = ---- ----
|
||||||
|
DATA SIZE = ---- ----
|
||||||
|
IDATA SIZE = ---- ----
|
||||||
|
BIT SIZE = ---- ----
|
||||||
|
END OF MODULE INFORMATION.
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,81 @@
|
||||||
|
//#include<REGX55.h> //including sfr registers for ports of the controller
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REGF51RC.H>
|
||||||
|
|
||||||
|
//#include <REGX55.H>
|
||||||
|
#include <REG51.H>
|
||||||
|
#include<utility.h>
|
||||||
|
#include <4x4_key.h>
|
||||||
|
|
||||||
|
//Keypad Connections
|
||||||
|
sbit R1 = P0^0;
|
||||||
|
sbit R2 = P0^1;
|
||||||
|
sbit R3 = P0^2;
|
||||||
|
sbit R4 = P0^3;
|
||||||
|
sbit C1 = P0^4;
|
||||||
|
sbit C2 = P0^5;
|
||||||
|
sbit C3 = P0^6;
|
||||||
|
sbit C4 = P0^7;
|
||||||
|
//==============================================================================
|
||||||
|
unsigned char Read_Keypad(void)
|
||||||
|
{
|
||||||
|
C1=1;
|
||||||
|
C2=1;
|
||||||
|
C3=1;
|
||||||
|
C4=1;
|
||||||
|
R1=0;
|
||||||
|
R2=1;
|
||||||
|
R3=1;
|
||||||
|
R4=1;
|
||||||
|
/*if(C1==0){delay(100);while(C1==0);return '7';}
|
||||||
|
if(C2==0){delay(100);while(C2==0);return '8';}
|
||||||
|
if(C3==0){delay(100);while(C3==0);return '9';}
|
||||||
|
if(C4==0){delay(100);while(C4==0);return 'C';} */
|
||||||
|
|
||||||
|
if(C1==0)return 0x01;
|
||||||
|
if(C2==0)return 0x02;
|
||||||
|
if(C3==0)return 0x03;
|
||||||
|
if(C4==0)return 'A';
|
||||||
|
R1=1;
|
||||||
|
R2=0;
|
||||||
|
R3=1;
|
||||||
|
R4=1;
|
||||||
|
/*if(C1==0){delay(100);while(C1==0);return '4';}
|
||||||
|
if(C2==0){delay(100);while(C2==0);return '5';}
|
||||||
|
if(C3==0){delay(100);while(C3==0);return '6';}
|
||||||
|
if(C4==0){delay(100);while(C4==0);return 'B';} */
|
||||||
|
|
||||||
|
if(C1==0)return 0x04;
|
||||||
|
if(C2==0)return 0x05;
|
||||||
|
if(C3==0)return 0x06;
|
||||||
|
if(C4==0)return 'B';
|
||||||
|
R1=1;
|
||||||
|
R2=1;
|
||||||
|
R3=0;
|
||||||
|
R4=1;
|
||||||
|
/*if(C1==0){delay(100);while(C1==0);return '1';}
|
||||||
|
if(C2==0){delay(100);while(C2==0);return '2';}
|
||||||
|
if(C3==0){delay(100);while(C3==0);return '3';}
|
||||||
|
if(C4==0){delay(100);while(C4==0);return 'A';} */
|
||||||
|
|
||||||
|
if(C1==0)return 0x07;
|
||||||
|
if(C2==0)return 0x08;
|
||||||
|
if(C3==0)return 0x09;
|
||||||
|
if(C4==0)return 'C';
|
||||||
|
R1=1;
|
||||||
|
R2=1;
|
||||||
|
R3=1;
|
||||||
|
R4=0;
|
||||||
|
/*if(C1==0){delay(100);while(C1==0);return '*';}
|
||||||
|
if(C2==0){delay(100);while(C2==0);return '0';}
|
||||||
|
if(C3==0){delay(100);while(C3==0);return '#';}
|
||||||
|
if(C4==0){delay(100);while(C4==0);return 'D';} */
|
||||||
|
|
||||||
|
if(C1==0)return '*';
|
||||||
|
if(C2==0)return 0x00;
|
||||||
|
if(C3==0)return '#';
|
||||||
|
if(C4==0)return 'D';
|
||||||
|
|
||||||
|
return 'x';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
unsigned char Read_Keypad(void);
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
/*this is the pgm for ADC 7780 using SPI Protocol*/
|
||||||
|
|
||||||
|
//#pragma ot(9,size)
|
||||||
|
//#pragma nointpromote
|
||||||
|
//#include <REGX55.H>
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REGF51RC.H>
|
||||||
|
|
||||||
|
//#include <REG51.H>
|
||||||
|
#include <REGX55.H>
|
||||||
|
|
||||||
|
#include <absacc.h>
|
||||||
|
#include <intrins.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include <ser_disp.h>
|
||||||
|
#include <utility.h>
|
||||||
|
#include <ADC_AD7780.h>
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
sbit clk = P3^3;
|
||||||
|
sbit dout = P3^2;
|
||||||
|
|
||||||
|
sbit PDRST = P3^4;
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits;
|
||||||
|
extern unsigned int idata adc_val,filter_val;
|
||||||
|
extern bit Adc_Data_Ready,Adc_Status_bit73;
|
||||||
|
|
||||||
|
unsigned int data Adc_Value;
|
||||||
|
extern bit adc_pol,rd_ok;
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
void init_adc_AD7780(void)
|
||||||
|
{
|
||||||
|
PDRST = 0;
|
||||||
|
delay(5);
|
||||||
|
PDRST = 1;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
unsigned char Read_Adc_AD7780(void)
|
||||||
|
{
|
||||||
|
unsigned char dat=0;
|
||||||
|
char i;
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
dat <<= 1;
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
if(dout) dat |= 0x01;
|
||||||
|
else dat |= 0x00;
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
clk=1;
|
||||||
|
return(dat);
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
void Get_Adc_Result_AD7780(void)
|
||||||
|
{
|
||||||
|
if(Adc_Data_Ready)
|
||||||
|
{
|
||||||
|
Adc_Value_MSB = Read_Adc_AD7780();
|
||||||
|
Adc_Value_MLSB = Read_Adc_AD7780();
|
||||||
|
Adc_Value_LSB = Read_Adc_AD7780();
|
||||||
|
|
||||||
|
if((Adc_Value_MSB & 0x80)==0x80)adc_pol=0;
|
||||||
|
else adc_pol=1;
|
||||||
|
|
||||||
|
Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6);
|
||||||
|
Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6);
|
||||||
|
Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB;
|
||||||
|
rst_wdt();
|
||||||
|
Status_Bits = Read_Adc_AD7780();
|
||||||
|
Adc_Data_Ready=0;
|
||||||
|
EX0 = 1;
|
||||||
|
}
|
||||||
|
if(Status_Bits == 73)
|
||||||
|
{
|
||||||
|
adc_val = Adc_Value;
|
||||||
|
//filter_val = adc_val; //No filteration
|
||||||
|
Adc_Status_bit73 = 1;
|
||||||
|
rd_ok=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -0,0 +1,112 @@
|
||||||
|
C51 COMPILER V9.60.7.0 ADC_AD7780 07/10/2026 17:02:31 PAGE 1
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE ADC_AD7780
|
||||||
|
OBJECT MODULE PLACED IN ADC_AD7780.OBJ
|
||||||
|
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADC_AD7780.C BROWSE DEBUG OBJECTEXTEND
|
||||||
|
|
||||||
|
line level source
|
||||||
|
|
||||||
|
1 /*this is the pgm for ADC 7780 using SPI Protocol*/
|
||||||
|
2
|
||||||
|
3 //#pragma ot(9,size)
|
||||||
|
4 //#pragma nointpromote
|
||||||
|
5 //#include <REGX55.H>
|
||||||
|
6 //#include <SST89x5x4.H>
|
||||||
|
7 //#include <REGF51RC.H>
|
||||||
|
8
|
||||||
|
9 //#include <REG51.H>
|
||||||
|
10 #include <REGX55.H>
|
||||||
|
11
|
||||||
|
12 #include <absacc.h>
|
||||||
|
13 #include <intrins.h>
|
||||||
|
14 #include <math.h>
|
||||||
|
15
|
||||||
|
16 #include <ser_disp.h>
|
||||||
|
17 #include <utility.h>
|
||||||
|
18 #include <ADC_AD7780.h>
|
||||||
|
19
|
||||||
|
20 //-----------------------------------------------------------------------------
|
||||||
|
21 sbit clk = P3^3;
|
||||||
|
22 sbit dout = P3^2;
|
||||||
|
23
|
||||||
|
24 sbit PDRST = P3^4;
|
||||||
|
25 //-----------------------------------------------------------------------------
|
||||||
|
26 extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits;
|
||||||
|
27 extern unsigned int idata adc_val,filter_val;
|
||||||
|
28 extern bit Adc_Data_Ready,Adc_Status_bit73;
|
||||||
|
29
|
||||||
|
30 unsigned int data Adc_Value;
|
||||||
|
31 extern bit adc_pol,rd_ok;
|
||||||
|
32 //--------------------------------------------------------------------------
|
||||||
|
33 void init_adc_AD7780(void)
|
||||||
|
34 {
|
||||||
|
35 1 PDRST = 0;
|
||||||
|
36 1 delay(5);
|
||||||
|
37 1 PDRST = 1;
|
||||||
|
38 1 }
|
||||||
|
39 //-----------------------------------------------------------------------------
|
||||||
|
40 unsigned char Read_Adc_AD7780(void)
|
||||||
|
41 {
|
||||||
|
42 1 unsigned char dat=0;
|
||||||
|
43 1 char i;
|
||||||
|
44 1 for(i=0;i<8;i++)
|
||||||
|
45 1 {
|
||||||
|
46 2 dat <<= 1;
|
||||||
|
47 2 clk=1;
|
||||||
|
48 2 nop();
|
||||||
|
49 2 clk=0;
|
||||||
|
50 2 nop();
|
||||||
|
51 2 if(dout) dat |= 0x01;
|
||||||
|
52 2 else dat |= 0x00;
|
||||||
|
53 2 rst_wdt();
|
||||||
|
54 2 }
|
||||||
|
55 1 clk=1;
|
||||||
|
C51 COMPILER V9.60.7.0 ADC_AD7780 07/10/2026 17:02:31 PAGE 2
|
||||||
|
|
||||||
|
56 1 return(dat);
|
||||||
|
57 1 }
|
||||||
|
58 //-------------------------------------------------------------------------
|
||||||
|
59 void Get_Adc_Result_AD7780(void)
|
||||||
|
60 {
|
||||||
|
61 1 if(Adc_Data_Ready)
|
||||||
|
62 1 {
|
||||||
|
63 2 Adc_Value_MSB = Read_Adc_AD7780();
|
||||||
|
64 2 Adc_Value_MLSB = Read_Adc_AD7780();
|
||||||
|
65 2 Adc_Value_LSB = Read_Adc_AD7780();
|
||||||
|
66 2
|
||||||
|
67 2 if((Adc_Value_MSB & 0x80)==0x80)adc_pol=0;
|
||||||
|
68 2 else adc_pol=1;
|
||||||
|
69 2
|
||||||
|
70 2 Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6);
|
||||||
|
71 2 Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6);
|
||||||
|
72 2 Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB;
|
||||||
|
73 2 rst_wdt();
|
||||||
|
74 2 Status_Bits = Read_Adc_AD7780();
|
||||||
|
75 2 Adc_Data_Ready=0;
|
||||||
|
76 2 EX0 = 1;
|
||||||
|
77 2 }
|
||||||
|
78 1 if(Status_Bits == 73)
|
||||||
|
79 1 {
|
||||||
|
80 2 adc_val = Adc_Value;
|
||||||
|
81 2 //filter_val = adc_val; //No filteration
|
||||||
|
82 2 Adc_Status_bit73 = 1;
|
||||||
|
83 2 rd_ok=1;
|
||||||
|
84 2 }
|
||||||
|
85 1 }
|
||||||
|
86 //-------------------------------------------------------------------------
|
||||||
|
87
|
||||||
|
|
||||||
|
|
||||||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||||
|
CODE SIZE = 164 ----
|
||||||
|
CONSTANT SIZE = ---- ----
|
||||||
|
XDATA SIZE = ---- ----
|
||||||
|
PDATA SIZE = ---- ----
|
||||||
|
DATA SIZE = 2 2
|
||||||
|
IDATA SIZE = ---- ----
|
||||||
|
BIT SIZE = ---- ----
|
||||||
|
END OF MODULE INFORMATION.
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
//extern void Get_Adc_Result(void);
|
||||||
|
//extern void init_adc(void);
|
||||||
|
|
||||||
|
extern void Get_Adc_Result_AD7780(void);
|
||||||
|
extern void init_adc_AD7780(void);
|
||||||
|
|
@ -0,0 +1,201 @@
|
||||||
|
/*this is the pgm for ADC 7780 using SPI Protocol*/
|
||||||
|
#if defined( _HX711 )
|
||||||
|
//#pragma ot(9,size)
|
||||||
|
//#pragma nointpromote
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REGF51RC.H>
|
||||||
|
// #include <REG51.H>
|
||||||
|
#include <REGX55.H>
|
||||||
|
|
||||||
|
|
||||||
|
#include <absacc.h>
|
||||||
|
#include <intrins.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include <ser_disp.h>
|
||||||
|
#include <utility.h>
|
||||||
|
#include <ADC_HX711.h>
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
sbit dout = P3^2;
|
||||||
|
//sbit clk = P3^4;
|
||||||
|
sbit clk = P3^3;
|
||||||
|
sbit PDRST = P3^5;
|
||||||
|
|
||||||
|
//sbit SPEED = P1^7;
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits;
|
||||||
|
extern unsigned int idata filter_val;
|
||||||
|
extern unsigned int idata adc_val;
|
||||||
|
extern bit Adc_Data_Ready,Adc_Status_bit73;
|
||||||
|
|
||||||
|
unsigned int data Temp_Adc_Value;
|
||||||
|
extern bit adc_pol,rd_ok;
|
||||||
|
//unsigned char set_gain=1,GAIN=1;
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
unsigned char Read_Adc_HX711(void);
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
//void init_adc(void)
|
||||||
|
void init_adc_HX711(void)
|
||||||
|
{
|
||||||
|
unsigned char i;
|
||||||
|
|
||||||
|
/*if(set_gain < 64) GAIN = 2; //32, channel B
|
||||||
|
else if(set_gain < 128) GAIN = 3; //64, channel A
|
||||||
|
else GAIN = 1; //128, channel A */
|
||||||
|
|
||||||
|
PDRST = 0;
|
||||||
|
delay(5);
|
||||||
|
|
||||||
|
/*SPEED=0;//10 SPS
|
||||||
|
//SPEED=1;//80 SPS
|
||||||
|
GAIN=1;//0mV to +19.5mV (Gain = 128)
|
||||||
|
//GAIN=0; //0mV to +39mV (Gain = 64)*/
|
||||||
|
|
||||||
|
PDRST = 1;
|
||||||
|
delay(5);
|
||||||
|
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
nop();
|
||||||
|
delay(5);
|
||||||
|
|
||||||
|
//for(i=0;i<=26;i++)
|
||||||
|
//for(i=0;i<(24+GAIN);i++)
|
||||||
|
for(i=0;i<25;i++)
|
||||||
|
{
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
unsigned char Read_Adc_HX711(void)
|
||||||
|
{
|
||||||
|
unsigned char dat=0;
|
||||||
|
char i;
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
dat <<= 1;
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
if(dout)dat |= 0x01;
|
||||||
|
else dat |= 0x00;
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
//clk=1;
|
||||||
|
return(dat);
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//void Get_Adc_Result(void)
|
||||||
|
void Get_Adc_Result_HX711(void)
|
||||||
|
{
|
||||||
|
if(Adc_Data_Ready)
|
||||||
|
{
|
||||||
|
Adc_Value_MSB = Read_Adc_HX711();
|
||||||
|
Adc_Value_MLSB = Read_Adc_HX711();
|
||||||
|
Adc_Value_LSB = Read_Adc_HX711();
|
||||||
|
|
||||||
|
if((Adc_Value_MSB & 0x80)==0x80)adc_pol=1;
|
||||||
|
else adc_pol=0;
|
||||||
|
|
||||||
|
/*Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6);
|
||||||
|
Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6);*/
|
||||||
|
Adc_Value_LSB = (Adc_Value_MLSB << 1 ) + (Adc_Value_LSB >> 7);
|
||||||
|
Adc_Value_MSB = (Adc_Value_MSB << 1 ) + (Adc_Value_MLSB >> 7);
|
||||||
|
Temp_Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB;
|
||||||
|
//Status_Bits = Read_Adc();
|
||||||
|
Adc_Data_Ready=0;
|
||||||
|
//EX0 = 1;
|
||||||
|
}
|
||||||
|
//filter_val = Temp_Adc_Value;
|
||||||
|
adc_val = Temp_Adc_Value;
|
||||||
|
rd_ok=1;
|
||||||
|
/* if(Status_Bits == 73)
|
||||||
|
{
|
||||||
|
adc_val = Adc_Value;
|
||||||
|
filter_val = adc_val; //No filteration
|
||||||
|
Adc_Status_bit73 = 1;
|
||||||
|
}*/
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
clk=0;
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
/*unsigned char Read_Adc(void)
|
||||||
|
{
|
||||||
|
unsigned char dat=0;
|
||||||
|
char i;
|
||||||
|
Temp_Adc_Value=0;
|
||||||
|
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
//delay(1);
|
||||||
|
|
||||||
|
for(i=0;i<24;i++)
|
||||||
|
{
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
//delay(1);
|
||||||
|
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
//delay(1);
|
||||||
|
if(i==0)
|
||||||
|
{
|
||||||
|
if(dout) dat |= 0x01;
|
||||||
|
else dat |= 0x00;
|
||||||
|
}
|
||||||
|
if(i>1 && i<18)
|
||||||
|
{
|
||||||
|
Temp_Adc_Value <<= 1;
|
||||||
|
if(dout) Temp_Adc_Value |= 0x01;
|
||||||
|
else Temp_Adc_Value |= 0x00;
|
||||||
|
}
|
||||||
|
//rst_wdt();
|
||||||
|
}
|
||||||
|
//clk=1;
|
||||||
|
return(dat);
|
||||||
|
}*/
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
/*void Get_Adc_Result(void)
|
||||||
|
{
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
nop();
|
||||||
|
//delay(5);
|
||||||
|
|
||||||
|
//while(dout);
|
||||||
|
//Adc_Data_Ready=1;
|
||||||
|
|
||||||
|
|
||||||
|
if(Adc_Data_Ready)
|
||||||
|
{
|
||||||
|
//Adc_Value_MSB = Read_Adc();
|
||||||
|
//Adc_Value_MLSB = Read_Adc();
|
||||||
|
//Adc_Value_LSB = Read_Adc();
|
||||||
|
//Adc_Value_LSB = (Adc_Value_MLSB << 4 ) + (Adc_Value_LSB >> 4);
|
||||||
|
//Adc_Value_MSB = (Adc_Value_MSB << 4 ) + (Adc_Value_MLSB >> 4);
|
||||||
|
//Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB;
|
||||||
|
//rst_wdt();
|
||||||
|
Status_Bits = Read_Adc();
|
||||||
|
adc_value = Temp_Adc_Value;
|
||||||
|
//adc_val = Adc_Value>>1;
|
||||||
|
//adc_val = (( ~( Adc_Value - 1 ) ) & 0xFFFF )>>1;
|
||||||
|
Adc_Data_Ready=0;
|
||||||
|
//EX0 = 1;
|
||||||
|
}
|
||||||
|
//if(Status_Bits == 73)
|
||||||
|
//{
|
||||||
|
//adc_val = Adc_Value;
|
||||||
|
//filter_val = adc_val; //No filteration
|
||||||
|
// Adc_Status_bit73 = 1;
|
||||||
|
//}
|
||||||
|
} */
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,230 @@
|
||||||
|
C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 1
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE ADC_HX711
|
||||||
|
OBJECT MODULE PLACED IN ADC_HX711.OBJ
|
||||||
|
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADC_HX711.C BROWSE DEBUG OBJECTEXTEND
|
||||||
|
|
||||||
|
line level source
|
||||||
|
|
||||||
|
1 /*this is the pgm for ADC 7780 using SPI Protocol*/
|
||||||
|
2 #if defined( _HX711 )
|
||||||
|
//#pragma ot(9,size)
|
||||||
|
//#pragma nointpromote
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REGF51RC.H>
|
||||||
|
// #include <REG51.H>
|
||||||
|
#include <REGX55.H>
|
||||||
|
|
||||||
|
|
||||||
|
#include <absacc.h>
|
||||||
|
#include <intrins.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include <ser_disp.h>
|
||||||
|
#include <utility.h>
|
||||||
|
#include <ADC_HX711.h>
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
sbit dout = P3^2;
|
||||||
|
//sbit clk = P3^4;
|
||||||
|
sbit clk = P3^3;
|
||||||
|
sbit PDRST = P3^5;
|
||||||
|
|
||||||
|
//sbit SPEED = P1^7;
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits;
|
||||||
|
extern unsigned int idata filter_val;
|
||||||
|
extern unsigned int idata adc_val;
|
||||||
|
extern bit Adc_Data_Ready,Adc_Status_bit73;
|
||||||
|
|
||||||
|
unsigned int data Temp_Adc_Value;
|
||||||
|
extern bit adc_pol,rd_ok;
|
||||||
|
//unsigned char set_gain=1,GAIN=1;
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
unsigned char Read_Adc_HX711(void);
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
//void init_adc(void)
|
||||||
|
void init_adc_HX711(void)
|
||||||
|
{
|
||||||
|
unsigned char i;
|
||||||
|
|
||||||
|
/*if(set_gain < 64) GAIN = 2; //32, channel B
|
||||||
|
else if(set_gain < 128) GAIN = 3; //64, channel A
|
||||||
|
else GAIN = 1; //128, channel A */
|
||||||
|
|
||||||
|
PDRST = 0;
|
||||||
|
delay(5);
|
||||||
|
|
||||||
|
/*SPEED=0;//10 SPS
|
||||||
|
//SPEED=1;//80 SPS
|
||||||
|
GAIN=1;//0mV to +19.5mV (Gain = 128)
|
||||||
|
//GAIN=0; //0mV to +39mV (Gain = 64)*/
|
||||||
|
|
||||||
|
PDRST = 1;
|
||||||
|
delay(5);
|
||||||
|
C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 2
|
||||||
|
|
||||||
|
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
nop();
|
||||||
|
delay(5);
|
||||||
|
|
||||||
|
//for(i=0;i<=26;i++)
|
||||||
|
//for(i=0;i<(24+GAIN);i++)
|
||||||
|
for(i=0;i<25;i++)
|
||||||
|
{
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
unsigned char Read_Adc_HX711(void)
|
||||||
|
{
|
||||||
|
unsigned char dat=0;
|
||||||
|
char i;
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
dat <<= 1;
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
if(dout)dat |= 0x01;
|
||||||
|
else dat |= 0x00;
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
//clk=1;
|
||||||
|
return(dat);
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//void Get_Adc_Result(void)
|
||||||
|
void Get_Adc_Result_HX711(void)
|
||||||
|
{
|
||||||
|
if(Adc_Data_Ready)
|
||||||
|
{
|
||||||
|
Adc_Value_MSB = Read_Adc_HX711();
|
||||||
|
Adc_Value_MLSB = Read_Adc_HX711();
|
||||||
|
Adc_Value_LSB = Read_Adc_HX711();
|
||||||
|
|
||||||
|
if((Adc_Value_MSB & 0x80)==0x80)adc_pol=1;
|
||||||
|
else adc_pol=0;
|
||||||
|
|
||||||
|
/*Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6);
|
||||||
|
Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6);*/
|
||||||
|
Adc_Value_LSB = (Adc_Value_MLSB << 1 ) + (Adc_Value_LSB >> 7);
|
||||||
|
Adc_Value_MSB = (Adc_Value_MSB << 1 ) + (Adc_Value_MLSB >> 7);
|
||||||
|
Temp_Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB;
|
||||||
|
//Status_Bits = Read_Adc();
|
||||||
|
Adc_Data_Ready=0;
|
||||||
|
//EX0 = 1;
|
||||||
|
}
|
||||||
|
//filter_val = Temp_Adc_Value;
|
||||||
|
adc_val = Temp_Adc_Value;
|
||||||
|
rd_ok=1;
|
||||||
|
C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 3
|
||||||
|
|
||||||
|
/* if(Status_Bits == 73)
|
||||||
|
{
|
||||||
|
adc_val = Adc_Value;
|
||||||
|
filter_val = adc_val; //No filteration
|
||||||
|
Adc_Status_bit73 = 1;
|
||||||
|
}*/
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
clk=0;
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
/*unsigned char Read_Adc(void)
|
||||||
|
{
|
||||||
|
unsigned char dat=0;
|
||||||
|
char i;
|
||||||
|
Temp_Adc_Value=0;
|
||||||
|
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
//delay(1);
|
||||||
|
|
||||||
|
for(i=0;i<24;i++)
|
||||||
|
{
|
||||||
|
clk=1;
|
||||||
|
nop();
|
||||||
|
//delay(1);
|
||||||
|
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
//delay(1);
|
||||||
|
if(i==0)
|
||||||
|
{
|
||||||
|
if(dout) dat |= 0x01;
|
||||||
|
else dat |= 0x00;
|
||||||
|
}
|
||||||
|
if(i>1 && i<18)
|
||||||
|
{
|
||||||
|
Temp_Adc_Value <<= 1;
|
||||||
|
if(dout) Temp_Adc_Value |= 0x01;
|
||||||
|
else Temp_Adc_Value |= 0x00;
|
||||||
|
}
|
||||||
|
//rst_wdt();
|
||||||
|
}
|
||||||
|
//clk=1;
|
||||||
|
return(dat);
|
||||||
|
}*/
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
/*void Get_Adc_Result(void)
|
||||||
|
{
|
||||||
|
clk=0;
|
||||||
|
nop();
|
||||||
|
nop();
|
||||||
|
//delay(5);
|
||||||
|
|
||||||
|
//while(dout);
|
||||||
|
//Adc_Data_Ready=1;
|
||||||
|
|
||||||
|
|
||||||
|
if(Adc_Data_Ready)
|
||||||
|
{
|
||||||
|
//Adc_Value_MSB = Read_Adc();
|
||||||
|
//Adc_Value_MLSB = Read_Adc();
|
||||||
|
C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 4
|
||||||
|
|
||||||
|
//Adc_Value_LSB = Read_Adc();
|
||||||
|
//Adc_Value_LSB = (Adc_Value_MLSB << 4 ) + (Adc_Value_LSB >> 4);
|
||||||
|
//Adc_Value_MSB = (Adc_Value_MSB << 4 ) + (Adc_Value_MLSB >> 4);
|
||||||
|
//Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB;
|
||||||
|
//rst_wdt();
|
||||||
|
Status_Bits = Read_Adc();
|
||||||
|
adc_value = Temp_Adc_Value;
|
||||||
|
//adc_val = Adc_Value>>1;
|
||||||
|
//adc_val = (( ~( Adc_Value - 1 ) ) & 0xFFFF )>>1;
|
||||||
|
Adc_Data_Ready=0;
|
||||||
|
//EX0 = 1;
|
||||||
|
}
|
||||||
|
//if(Status_Bits == 73)
|
||||||
|
//{
|
||||||
|
//adc_val = Adc_Value;
|
||||||
|
//filter_val = adc_val; //No filteration
|
||||||
|
// Adc_Status_bit73 = 1;
|
||||||
|
//}
|
||||||
|
} */
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||||
|
CODE SIZE = ---- ----
|
||||||
|
CONSTANT SIZE = ---- ----
|
||||||
|
XDATA SIZE = ---- ----
|
||||||
|
PDATA SIZE = ---- ----
|
||||||
|
DATA SIZE = ---- ----
|
||||||
|
IDATA SIZE = ---- ----
|
||||||
|
BIT SIZE = ---- ----
|
||||||
|
END OF MODULE INFORMATION.
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
/*sbit dout = P1^3;
|
||||||
|
sbit clk = P1^2;
|
||||||
|
sbit PDRST = P1^1;*/
|
||||||
|
|
||||||
|
/*sbit dout = P3^2;
|
||||||
|
sbit clk = P3^3;
|
||||||
|
sbit PDRST = P3^4;*/
|
||||||
|
/*sbit SPEED = P3^5;
|
||||||
|
sbit GAIN = P0^0;*/
|
||||||
|
|
||||||
|
//extern void Get_Adc_Result(void);
|
||||||
|
//extern void init_adc(void);
|
||||||
|
|
||||||
|
extern void init_adc_HX711(void);
|
||||||
|
extern void Get_Adc_Result_HX711(void);
|
||||||
|
|
||||||
|
|
@ -0,0 +1,249 @@
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* demoIAP.c - Sample IAP C51 code for SST89x516RDx/SST89x58RDx Devices
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This sample code provides programming routines using In-Application
|
||||||
|
* Programming (IAP).
|
||||||
|
* This sample code is for the user’s reference only. SST does not
|
||||||
|
* guarantee the functionality or the usefulness of the sample code.
|
||||||
|
*
|
||||||
|
* In the SST89x516RDx/SST89x58RDx MCU, there are two blocks of flash
|
||||||
|
* memory. This code is to write data to block1 starting at 1000H
|
||||||
|
* (for the SST89x516RDx) or E000H (for the SST89x58RDx) by running IAP
|
||||||
|
* operations from block 0. The default set up is for SST89x516RDx.
|
||||||
|
* When using SST89x58RDx, please modify the global variable BLK1_DST_ADDR
|
||||||
|
* following the instruction below the variable definition.
|
||||||
|
*
|
||||||
|
* The companion SST89x516RDx/SST89x58RDx MCU data sheet should be
|
||||||
|
* reviewed in conjunction with this sample code.
|
||||||
|
*
|
||||||
|
* Note: This demo program is specifically for SST89x516RDx/SST89x58RDx devices.
|
||||||
|
***********************************************************************************************************/
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REGF51RC.H>
|
||||||
|
|
||||||
|
#include <IAP.h>
|
||||||
|
#include <eeprom.h>
|
||||||
|
#include <utility.h>
|
||||||
|
#include <ser_disp.h>
|
||||||
|
//**********************************************************************************************************
|
||||||
|
extern unsigned char idata EEPROM_block;
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* FlashFlex MCU SFR Memory Addresses
|
||||||
|
***********************************************************************************************************/
|
||||||
|
//sfr SFCF = 0xB1; /*SuperFlash Configuration*/
|
||||||
|
//sfr SFCM = 0xB2; /*SuperFlash Command*/
|
||||||
|
//sfr SFAL = 0xB3; /*SuperFlash Address Low*/
|
||||||
|
//sfr SFAH = 0xB4; /*SuperFlash Address High*/
|
||||||
|
//sfr SFDT = 0xB5; /*SuperFlash Data*/
|
||||||
|
//sfr SFST = 0xB6; /*SuperFlash Status*/
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* FlashFlex MCU IAP Commands
|
||||||
|
***********************************************************************************************************/
|
||||||
|
#define SFCM_SE 0x0B; /*Sector-Erase IAP cmd*/
|
||||||
|
#define SFCM_VB 0x0C; /*Byte-Verify IAP cmd*/
|
||||||
|
#define SFCM_PB 0x0E; /*Byte-Program IAP cmd*/
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* Global Variable Definition
|
||||||
|
***********************************************************************************************************/
|
||||||
|
const unsigned short int BLK1_DST_ADDR = 0x1000;
|
||||||
|
/*SST89x516RDx destination address (in the other on-chip flash memory block)
|
||||||
|
where data will be written to, which is above BSL code space.
|
||||||
|
Please comment out this line and uncomment the following line if SST89x58RDx is used*/
|
||||||
|
/*const unsigned short int BLK1_DST_ADDR = 0x0F000; */
|
||||||
|
/*SST89x58RDx destination address (in the other on-chip flash memory block)
|
||||||
|
where data will be written to, which is above BSL code space.
|
||||||
|
Please comment out this line and uncomment the previous line if SST89x516RDx is used*/
|
||||||
|
const unsigned char SECT_SIZE = 0x80; /*number of bytes in a sector*/
|
||||||
|
unsigned char ErrorCode; /*show the result of the operation*/
|
||||||
|
//*********************************************************************************************************
|
||||||
|
/*©2008 Silicon Storage Technology, Inc. S72048-03-000 8/08
|
||||||
|
Application Note
|
||||||
|
FlashFlex Microcontroller
|
||||||
|
In-Application Programming Example Using C
|
||||||
|
3*/
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* Function Prototype
|
||||||
|
***********************************************************************************************************/
|
||||||
|
//void sector_erase(unsigned short int dataAddr);
|
||||||
|
//void byte_program(unsigned short int dataAddr, unsigned char dataByte);
|
||||||
|
//unsigned char byte_verify(unsigned short int dataAddr);
|
||||||
|
int ready();
|
||||||
|
void error();
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* MAIN PROGRAM
|
||||||
|
* To program a sector of data bytes (starting from 0, increment by 1)
|
||||||
|
* into block 1, starting address is BLK1_DST_ADDR.
|
||||||
|
* When the IAP is completed successfully, ErrorCode is 0. Otherwise,
|
||||||
|
* ErrorCode is 1.
|
||||||
|
*********************************************************************************************************/
|
||||||
|
void EEPROM_copy_to_sectors(unsigned short int dataAddr, unsigned char EEdataByteAddr)
|
||||||
|
{
|
||||||
|
//unsigned short int destAddr = BLK1_DST_ADDR;
|
||||||
|
unsigned short int destAddr = dataAddr;
|
||||||
|
unsigned char byteCnt ; //byte count/
|
||||||
|
unsigned char origData; //store the data byte for IAP operation
|
||||||
|
unsigned char verifyData; //verify the data byte
|
||||||
|
unsigned char sectorNo=0; //each sector 128 bytes
|
||||||
|
|
||||||
|
for(sectorNo=0; sectorNo<8; sectorNo++)
|
||||||
|
{
|
||||||
|
sector_erase(destAddr); //erase sector area before writing there
|
||||||
|
origData = 0;
|
||||||
|
if(sectorNo==0) {EEPROM_block = Block_0;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==1) {EEPROM_block = Block_0;}
|
||||||
|
else if(sectorNo==2) {EEPROM_block = Block_1;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==3) {EEPROM_block = Block_1;}
|
||||||
|
else if(sectorNo==4) {EEPROM_block = Block_2;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==5) {EEPROM_block = Block_2;}
|
||||||
|
else if(sectorNo==6) {EEPROM_block = Block_3;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==7) {EEPROM_block = Block_3;}
|
||||||
|
rst_wdt();
|
||||||
|
for(byteCnt=0; byteCnt<SECT_SIZE; byteCnt++)
|
||||||
|
{
|
||||||
|
origData=read_eeprom(EEdataByteAddr);
|
||||||
|
byte_program(destAddr, origData); //program a byte
|
||||||
|
verifyData=byte_verify(destAddr); //verify byte programmed correctly
|
||||||
|
if(verifyData!=origData)error(); //go to error if programmed incorrectly
|
||||||
|
destAddr++;
|
||||||
|
origData++;
|
||||||
|
EEdataByteAddr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ErrorCode=0; //IAP correct
|
||||||
|
disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS"
|
||||||
|
}
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* IAP SUBROUTINES
|
||||||
|
* 1. Sector-Erase
|
||||||
|
* 2. Byte-Program
|
||||||
|
* 3. Byte-Verify
|
||||||
|
***********************************************************************************************************/
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* Sector-Erase Subroutine
|
||||||
|
***********************************************************************************************************/
|
||||||
|
void sector_erase(unsigned short int dataAddr)
|
||||||
|
//void sector_erase(void)
|
||||||
|
{
|
||||||
|
unsigned short int destAddr = dataAddr;
|
||||||
|
//unsigned short int destAddr = BLK1_DST_ADDR;
|
||||||
|
SFCF = SFCF | 0x40; /*enable IAP */
|
||||||
|
SFAH = destAddr>>8; /*load high order address byte*/
|
||||||
|
SFAL = destAddr; /*load low order address byte */
|
||||||
|
SFCM = SFCM_SE; /*issue sector erase command */
|
||||||
|
if(!ready()) error();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//*********************************************************************************************************
|
||||||
|
/*©2008 Silicon Storage Technology, Inc. S72048-03-000 8/08
|
||||||
|
4
|
||||||
|
Application Note
|
||||||
|
FlashFlex Microcontroller
|
||||||
|
In-Application Programming Example Using C */
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* Byte-Program Subroutine
|
||||||
|
***********************************************************************************************************/
|
||||||
|
void byte_program(unsigned short int dataAddr, unsigned char dataByte)
|
||||||
|
{
|
||||||
|
unsigned short int destAddr = dataAddr;
|
||||||
|
SFCF = SFCF | 0x40; /*enable IAP */
|
||||||
|
SFAH = destAddr>>8; /*load high order address byte*/
|
||||||
|
SFAL = destAddr; /*load low order address byte */
|
||||||
|
SFDT = dataByte; /*load data to be programmed */
|
||||||
|
SFCM = SFCM_PB; /*issue byte program command */
|
||||||
|
if(!ready()) error();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* Byte-Verify Subroutine
|
||||||
|
***********************************************************************************************************/
|
||||||
|
unsigned char byte_verify(unsigned short int dataAddr)
|
||||||
|
{
|
||||||
|
unsigned short int destAddr = dataAddr;
|
||||||
|
unsigned char readByte;
|
||||||
|
SFCF = SFCF | 0x40; /*enable IAP */
|
||||||
|
SFAH = destAddr>>8; /*load high order address byte*/
|
||||||
|
SFAL = destAddr; /*load low order address byte */
|
||||||
|
SFCM = SFCM_VB; /*issue byte verify command */
|
||||||
|
readByte = SFDT;
|
||||||
|
SFCF = SFCF & 0xBF; /*turn off IAP*/
|
||||||
|
SFDT = 0;
|
||||||
|
return readByte;
|
||||||
|
}
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* Ready Subroutine
|
||||||
|
*
|
||||||
|
* Purpose: To check if the IAP operation is completed.
|
||||||
|
* When it is done, turn off IAP configuration.
|
||||||
|
***********************************************************************************************************/
|
||||||
|
int ready()
|
||||||
|
{
|
||||||
|
unsigned long int TimeOut = 0;
|
||||||
|
while (TimeOut < 100000)
|
||||||
|
{
|
||||||
|
if ((SFST&4) == 0) /* Check if IAP is done */
|
||||||
|
{ /* IAP is done */
|
||||||
|
SFCF = SFCF & 0xBF; /* turn off IAP*/
|
||||||
|
SFDT = 0; /* any value other than 0x55 */
|
||||||
|
return 1; /* IAP operation is completed*/
|
||||||
|
}
|
||||||
|
TimeOut++;
|
||||||
|
}
|
||||||
|
SFCF = SFCF & 0xBF; /*turn off IAP*/
|
||||||
|
SFDT = 0; /*any value other than 0x55*/
|
||||||
|
return 0; /*IAP operation is NOT completed before time out*/
|
||||||
|
}
|
||||||
|
//********************************************************************************************************
|
||||||
|
/*©2008 Silicon Storage Technology, Inc. S72048-03-000 8/08
|
||||||
|
Application Note
|
||||||
|
FlashFlex Microcontroller
|
||||||
|
In-Application Programming Example Using C
|
||||||
|
5*/
|
||||||
|
/***********************************************************************************************************
|
||||||
|
* Error Function
|
||||||
|
***********************************************************************************************************/
|
||||||
|
void error()
|
||||||
|
{
|
||||||
|
disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail"
|
||||||
|
ErrorCode=1; /*IAP error*/
|
||||||
|
//while(1) /*software trap*/
|
||||||
|
//{}
|
||||||
|
#ifdef _6_key
|
||||||
|
if(!mode) return;
|
||||||
|
#elif defined( _4x4_key )
|
||||||
|
if(KeyPressed == mode)return;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//**********************************************************************************************************
|
||||||
|
void sectors_copy_to_EEPROM(unsigned short int dataAddr, unsigned char EEdataByteAddr)
|
||||||
|
{
|
||||||
|
//unsigned short int destAddr = BLK1_DST_ADDR;
|
||||||
|
unsigned short int destAddr = dataAddr;
|
||||||
|
unsigned char byteCnt ; //byte count/
|
||||||
|
unsigned char verifyData; //verify the data byte
|
||||||
|
unsigned char sectorNo=0; //each sector 128 bytes
|
||||||
|
|
||||||
|
for(sectorNo=0; sectorNo<8; sectorNo++)
|
||||||
|
{
|
||||||
|
if(sectorNo==0) {EEPROM_block = Block_0;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==1) {EEPROM_block = Block_0;}
|
||||||
|
else if(sectorNo==2) {EEPROM_block = Block_1;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==3) {EEPROM_block = Block_1;}
|
||||||
|
else if(sectorNo==4) {EEPROM_block = Block_2;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==5) {EEPROM_block = Block_2;}
|
||||||
|
else if(sectorNo==6) {EEPROM_block = Block_3;EEdataByteAddr=0;}
|
||||||
|
else if(sectorNo==7) {EEPROM_block = Block_3;}
|
||||||
|
rst_wdt();
|
||||||
|
for(byteCnt=0; byteCnt<SECT_SIZE; byteCnt++)
|
||||||
|
{
|
||||||
|
verifyData=byte_verify(destAddr); //verify byte programmed correctly
|
||||||
|
//if(verifyData!=origData)error(); //go to error if programmed incorrectly
|
||||||
|
write_eeprom(EEdataByteAddr,verifyData);
|
||||||
|
destAddr++;
|
||||||
|
EEdataByteAddr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ErrorCode=0; //IAP correct
|
||||||
|
disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS"
|
||||||
|
}
|
||||||
|
//**********************************************************************************************************
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#ifndef __IAP_H__
|
||||||
|
#define __IAP_H__
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
extern const unsigned short int BLK1_DST_ADDR;
|
||||||
|
extern const unsigned char SECT_SIZE;
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
void EEPROM_copy_to_sectors(unsigned short int dataAddr, unsigned char EEdataByteAddr);
|
||||||
|
void sector_erase(unsigned short int dataAddr);
|
||||||
|
//void sector_erase(void);
|
||||||
|
void byte_program(unsigned short int dataAddr, unsigned char dataByte);
|
||||||
|
unsigned char byte_verify(unsigned short int dataAddr);
|
||||||
|
void sectors_copy_to_EEPROM(unsigned short int dataAddr, unsigned char EEdataByteAddr);
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
Tin filling machine program.
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Last update:08-01-2017
|
||||||
|
|
||||||
|
Card : AD7780 board
|
||||||
|
|
||||||
|
ADC : AD7780
|
||||||
|
|
||||||
|
Controller : SST89E516RD
|
||||||
|
--------------------------------------------------------
|
||||||
|
Ports used:
|
||||||
|
|
||||||
|
ADC : P3.2,P3.3,P3.4.
|
||||||
|
OUTPUT: P1.1 TO P1.4.
|
||||||
|
DISPLAY: P2.6,P2,7.
|
||||||
|
KEY BOARD: P2.0 TO P2.5(for 6Key) and P0 (for 4x4 key board)
|
||||||
|
EEP : P3.6,P3.7.
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Program variations:
|
||||||
|
|
||||||
|
Types of pgm given : 2.
|
||||||
|
|
||||||
|
1. 6 key program with 36 recipe
|
||||||
|
|
||||||
|
2. 4x4 key program with 36 recipe
|
||||||
|
|
||||||
|
---------------------------------------------------
|
||||||
|
Other features
|
||||||
|
|
||||||
|
Recipies stored in EEPROM 4 blocks (24C08)
|
||||||
|
Cumulative and functions enable values stored in RTC
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<pre>
|
||||||
|
<h1>µVision Build Log</h1>
|
||||||
|
<h2>Project:</h2>
|
||||||
|
E:\FILLTRONICS\CHECKING POGRAMS\UNDER GOING PROJECTS\New folder\Tin_fill_ 4x4-&_6Key_8digit_new_keyboard_ffd_36_recipe_2speed_HX711_AD7780 - 55wd\fill.uvproj
|
||||||
|
Project File Date: 07/24/2023
|
||||||
|
|
||||||
|
<h2>Output:</h2>
|
||||||
|
Build target 'Target 1'
|
||||||
|
compiling main.c...
|
||||||
|
compiling ser_disp.c...
|
||||||
|
compiling utility.c...
|
||||||
|
compiling eeprom.c...
|
||||||
|
compiling 4x4_key.c...
|
||||||
|
compiling ADC_AD7780.C...
|
||||||
|
compiling ADC_HX711.C...
|
||||||
|
linking...
|
||||||
|
Program Size: data=185.1 xdata=0 code=19562
|
||||||
|
creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD"...
|
||||||
|
"Tin_fill_4x4_key_36Recipe_ad7780_55WD" - 0 Error(s), 0 Warning(s).
|
||||||
|
Build target 'Target 1'
|
||||||
|
compiling main.c...
|
||||||
|
compiling ser_disp.c...
|
||||||
|
compiling utility.c...
|
||||||
|
compiling eeprom.c...
|
||||||
|
compiling 4x4_key.c...
|
||||||
|
compiling ADC_AD7780.C...
|
||||||
|
compiling ADC_HX711.C...
|
||||||
|
linking...
|
||||||
|
Program Size: data=185.1 xdata=0 code=19562
|
||||||
|
creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD"...
|
||||||
|
"Tin_fill_4x4_key_36Recipe_ad7780_55WD" - 0 Error(s), 0 Warning(s).
|
||||||
|
Build target 'Target 1'
|
||||||
|
compiling main.c...
|
||||||
|
compiling ser_disp.c...
|
||||||
|
compiling utility.c...
|
||||||
|
compiling eeprom.c...
|
||||||
|
compiling 4x4_key.c...
|
||||||
|
compiling ADC_AD7780.C...
|
||||||
|
compiling ADC_HX711.C...
|
||||||
|
linking...
|
||||||
|
Program Size: data=185.1 xdata=0 code=19562
|
||||||
|
creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"...
|
||||||
|
"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s).
|
||||||
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,9 @@
|
||||||
|
"main.obj",
|
||||||
|
"ser_disp.obj",
|
||||||
|
"utility.obj",
|
||||||
|
"eeprom.obj",
|
||||||
|
"4x4_key.obj",
|
||||||
|
"ADC_AD7780.obj",
|
||||||
|
"ADC_HX711.obj"
|
||||||
|
TO "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"
|
||||||
|
RAMSIZE(256)
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<pre>
|
||||||
|
<h1>µVision Build Log</h1>
|
||||||
|
<h2>Project:</h2>
|
||||||
|
C:\FILES\FILLTRONICS\2025 FILLTRONIC FINAL PROGRAMS\EMBEDED PROGRAMS 2025\C51 2025\Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2\fill.uvproj
|
||||||
|
Project File Date: 01/21/2026
|
||||||
|
|
||||||
|
<h2>Output:</h2>
|
||||||
|
compiling main.c...
|
||||||
|
main.c - 0 Error(s), 0 Warning(s).
|
||||||
|
Build target 'Target 1'
|
||||||
|
linking...
|
||||||
|
Program Size: data=189.1 xdata=0 code=19656
|
||||||
|
creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"...
|
||||||
|
"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s).
|
||||||
|
compiling main.c...
|
||||||
|
main.c - 0 Error(s), 0 Warning(s).
|
||||||
|
Build target 'Target 1'
|
||||||
|
linking...
|
||||||
|
Program Size: data=189.1 xdata=0 code=19656
|
||||||
|
creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"...
|
||||||
|
"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s).
|
||||||
|
Build target 'Target 1'
|
||||||
|
compiling main.c...
|
||||||
|
compiling ser_disp.c...
|
||||||
|
compiling utility.c...
|
||||||
|
compiling eeprom.c...
|
||||||
|
compiling 4x4_key.c...
|
||||||
|
compiling ADC_AD7780.C...
|
||||||
|
compiling ADC_HX711.C...
|
||||||
|
linking...
|
||||||
|
Program Size: data=189.1 xdata=0 code=19656
|
||||||
|
creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"...
|
||||||
|
"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s).
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,2 @@
|
||||||
|
[.ShellClassInfo]
|
||||||
|
IconResource=C:\Program Files\Google\Drive File Stream\130.0.2.0\GoogleDriveFS.exe,27
|
||||||
|
|
@ -0,0 +1,258 @@
|
||||||
|
C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 1
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE EEPROM
|
||||||
|
OBJECT MODULE PLACED IN eeprom.OBJ
|
||||||
|
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE eeprom.c BROWSE DEBUG OBJECTEXTEND
|
||||||
|
|
||||||
|
line level source
|
||||||
|
|
||||||
|
1 // Reads from & writes to eeprom
|
||||||
|
2
|
||||||
|
3 //#include <SST89x5x4.H>
|
||||||
|
4 //#include <REGF51RC.H>
|
||||||
|
5
|
||||||
|
6 //#include <REG51.H>
|
||||||
|
7 #include <REGX55.H>
|
||||||
|
8
|
||||||
|
9 #include <absacc.h>
|
||||||
|
10 #include <string.h>
|
||||||
|
11 #include <intrins.h>
|
||||||
|
12
|
||||||
|
13 #include <eeprom.h>
|
||||||
|
14 #include <utility.h>
|
||||||
|
15 //------------------------------------------------------------------------------
|
||||||
|
16 void start(void);
|
||||||
|
17 void stop(void);
|
||||||
|
18 void write_data(unsigned char d);
|
||||||
|
19 unsigned char read_data(void);
|
||||||
|
20 void ack(void);
|
||||||
|
21
|
||||||
|
22 sbit sda=P3^6;
|
||||||
|
23 sbit scl=P3^7;
|
||||||
|
24 //-------------------------------------------------------------------------
|
||||||
|
25 extern unsigned char idata EEPROM_block;
|
||||||
|
26 //-----------------------------------------------------------------------------
|
||||||
|
27 void write_eeprom(unsigned char wa,unsigned char wd)
|
||||||
|
28 {
|
||||||
|
29 1 rst_wdt();
|
||||||
|
30 1 start();
|
||||||
|
31 1 //write_data(0xA0);
|
||||||
|
32 1 write_data(EEPROM_block);
|
||||||
|
33 1 ack();
|
||||||
|
34 1 write_data(wa); // Write to EEPROM.
|
||||||
|
35 1 ack(); // wa = word address &
|
||||||
|
36 1 write_data(wd); // wd = data to be written.
|
||||||
|
37 1 ack();
|
||||||
|
38 1 stop();
|
||||||
|
39 1 delay(20);
|
||||||
|
40 1 }
|
||||||
|
41 //-----------------------------------------------------------------------------
|
||||||
|
42 unsigned char read_eeprom(unsigned char wa)
|
||||||
|
43 {
|
||||||
|
44 1 unsigned char d1;
|
||||||
|
45 1
|
||||||
|
46 1 rst_wdt();
|
||||||
|
47 1 start();
|
||||||
|
48 1 //write_data(0xA0); // Read from eeprom.
|
||||||
|
49 1 write_data(EEPROM_block);
|
||||||
|
50 1 ack(); // returns the data.
|
||||||
|
51 1 write_data(wa);
|
||||||
|
52 1 ack();
|
||||||
|
53 1 start();
|
||||||
|
54 1 //write_data(0xA1);
|
||||||
|
55 1 write_data(EEPROM_block+0x01);
|
||||||
|
C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 2
|
||||||
|
|
||||||
|
56 1 ack();
|
||||||
|
57 1 d1=read_data();
|
||||||
|
58 1 sda = 1;
|
||||||
|
59 1 ack();
|
||||||
|
60 1 stop();
|
||||||
|
61 1 return(d1);
|
||||||
|
62 1 }
|
||||||
|
63 //-----------------------------------------------------------------------------
|
||||||
|
64 void start(void)
|
||||||
|
65 {
|
||||||
|
66 1 sda = 1;
|
||||||
|
67 1 scl = 1;
|
||||||
|
68 1 nop();
|
||||||
|
69 1 sda = 0;
|
||||||
|
70 1 nop();
|
||||||
|
71 1 scl = 0;
|
||||||
|
72 1 }
|
||||||
|
73 //-----------------------------------------------------------------------------
|
||||||
|
74 void stop(void)
|
||||||
|
75 {
|
||||||
|
76 1 sda = 0;
|
||||||
|
77 1 nop();
|
||||||
|
78 1 scl = 1;
|
||||||
|
79 1 nop();
|
||||||
|
80 1 sda = 1;
|
||||||
|
81 1 }
|
||||||
|
82 //-----------------------------------------------------------------------------
|
||||||
|
83 void write_data(unsigned char d)
|
||||||
|
84 {
|
||||||
|
85 1 unsigned char i;
|
||||||
|
86 1 for(i=0;i<8;i++)
|
||||||
|
87 1 {
|
||||||
|
88 2 if(d & 0x80) sda = 1;
|
||||||
|
89 2 else sda = 0;
|
||||||
|
90 2 nop();
|
||||||
|
91 2 scl = 1;
|
||||||
|
92 2 nop();
|
||||||
|
93 2 scl = 0;
|
||||||
|
94 2 d<<=1;
|
||||||
|
95 2 }
|
||||||
|
96 1 }
|
||||||
|
97 //-----------------------------------------------------------------------------
|
||||||
|
98 unsigned char read_data(void)
|
||||||
|
99 {
|
||||||
|
100 1 unsigned char i,d2;
|
||||||
|
101 1 d2 = 0x00;
|
||||||
|
102 1 for(i=0;i<8;i++)
|
||||||
|
103 1 {
|
||||||
|
104 2 d2<<=1;
|
||||||
|
105 2 scl = 0;
|
||||||
|
106 2 nop();
|
||||||
|
107 2 scl = 1;
|
||||||
|
108 2 if(sda) d2 = d2 | 0x01;
|
||||||
|
109 2 else d2 = d2 | 0x00;
|
||||||
|
110 2 }
|
||||||
|
111 1 scl = 0;
|
||||||
|
112 1 return(d2);
|
||||||
|
113 1 }
|
||||||
|
114 //-----------------------------------------------------------------------------
|
||||||
|
115 void ack(void)
|
||||||
|
116 {
|
||||||
|
117 1 sda = 1;
|
||||||
|
C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 3
|
||||||
|
|
||||||
|
118 1 nop();
|
||||||
|
119 1 scl = 1;
|
||||||
|
120 1 nop();
|
||||||
|
121 1 scl = 0;
|
||||||
|
122 1 }
|
||||||
|
123 //-----------------------------------------------------------------------------
|
||||||
|
124 void write_RTC(unsigned char wa,unsigned char wd)
|
||||||
|
125 {
|
||||||
|
126 1 rst_wdt();
|
||||||
|
127 1 start();
|
||||||
|
128 1 write_data(0xD0);
|
||||||
|
129 1 ack();
|
||||||
|
130 1 write_data(wa); // Write to RTC.
|
||||||
|
131 1 ack(); // wa = word address &
|
||||||
|
132 1 write_data(wd); // wd = data to be written.
|
||||||
|
133 1 ack();
|
||||||
|
134 1 stop();
|
||||||
|
135 1 delay(20);
|
||||||
|
136 1 }
|
||||||
|
137 //-----------------------------------------------------------------------------
|
||||||
|
138 unsigned char read_RTC(unsigned char wa)
|
||||||
|
139 {
|
||||||
|
140 1 unsigned char d1;
|
||||||
|
141 1
|
||||||
|
142 1 rst_wdt();
|
||||||
|
143 1 start();
|
||||||
|
144 1 write_data(0xD0); // Read from RTC.
|
||||||
|
145 1 ack(); // returns the data.
|
||||||
|
146 1 write_data(wa);
|
||||||
|
147 1 ack();
|
||||||
|
148 1 start();
|
||||||
|
149 1 write_data(0xD1);
|
||||||
|
150 1 ack();
|
||||||
|
151 1 d1=read_data();
|
||||||
|
152 1 sda = 1;
|
||||||
|
153 1 ack();
|
||||||
|
154 1 stop();
|
||||||
|
155 1 return(d1);
|
||||||
|
156 1 }
|
||||||
|
157 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
158 //This function will write a 4 byte (32bit) long to the eeprom at
|
||||||
|
159 //the specified address to adress + 3.
|
||||||
|
160 void RTC_Writelong(unsigned char address,unsigned long value)
|
||||||
|
161 {
|
||||||
|
162 1 //Decomposition from a long to 4 bytes by using bitshift.
|
||||||
|
163 1 //One = Most significant -> Four = Least significant byte
|
||||||
|
164 1 idata unsigned char four = (value & 0xFF);
|
||||||
|
165 1 idata unsigned char three = ((value >> 8) & 0xFF);
|
||||||
|
166 1 idata unsigned char two = ((value >> 16) & 0xFF);
|
||||||
|
167 1 idata unsigned char one = ((value >> 24) & 0xFF);
|
||||||
|
168 1
|
||||||
|
169 1 //Write the 4 bytes into the eeprom memory.
|
||||||
|
170 1 write_RTC(address, four);
|
||||||
|
171 1 write_RTC(address + 1, three);
|
||||||
|
172 1 write_RTC(address + 2, two);
|
||||||
|
173 1 write_RTC(address + 3, one);
|
||||||
|
174 1 }
|
||||||
|
175 //------------------------------------------------------------------------------
|
||||||
|
176 //This function will return a 4 byte (32bit) long from the eeprom
|
||||||
|
177 //at the specified address to adress + 3.
|
||||||
|
178 unsigned long RTC_Readlong(unsigned char address)
|
||||||
|
179 {
|
||||||
|
C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 4
|
||||||
|
|
||||||
|
180 1 //Read the 4 bytes from the eeprom memory.
|
||||||
|
181 1 idata unsigned long four = read_RTC(address);
|
||||||
|
182 1 idata unsigned long three = read_RTC(address + 1);
|
||||||
|
183 1 idata unsigned long two = read_RTC(address + 2);
|
||||||
|
184 1 idata unsigned long one = read_RTC(address + 3);
|
||||||
|
185 1
|
||||||
|
186 1 //Return the recomposed long by using bitshift.
|
||||||
|
187 1 return (((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFF
|
||||||
|
-FFF));
|
||||||
|
188 1 }
|
||||||
|
189 //-----------------------------------------------------------------------------------------
|
||||||
|
190
|
||||||
|
191
|
||||||
|
192 //===========================================================================================
|
||||||
|
193 //internal EEPROM usage
|
||||||
|
194 //#include <AT898252.H>
|
||||||
|
195 //#include <absacc.h>
|
||||||
|
196
|
||||||
|
197 /*
|
||||||
|
198 * Return EEPROM Byte at address 'adr'
|
||||||
|
199 */
|
||||||
|
200 /*unsigned char ReadEEPROM (unsigned int adr) {
|
||||||
|
201 unsigned char v;
|
||||||
|
202
|
||||||
|
203 WMCON |= EEMEN_; // enable EEPROM
|
||||||
|
204 v = XBYTE[adr]; // read value
|
||||||
|
205 WMCON &= ~EEMEN_; // disable EEPROM
|
||||||
|
206 return (v);
|
||||||
|
207 }*/
|
||||||
|
208
|
||||||
|
209
|
||||||
|
210 /*
|
||||||
|
211 * Write EEPROM Byte 'val' at address 'adr'
|
||||||
|
212 */
|
||||||
|
213 /*void WriteEEPROM (unsigned int adr, unsigned char val) {
|
||||||
|
214 WMCON |= (EEMEN_ | EEMWE_); // enable EEPROM and set write bit
|
||||||
|
215 XBYTE[adr] = val; // write value
|
||||||
|
216 while ((WMCON & EERDY_) == 0); // wait until value programmed
|
||||||
|
217 WMCON &= ~(EEMWE_ | EEMEN_); // disable EEPROM and write strobe
|
||||||
|
218 }*/
|
||||||
|
219
|
||||||
|
220 /*
|
||||||
|
221 unsigned char v;
|
||||||
|
222
|
||||||
|
223 void main (void) {
|
||||||
|
224 v = ReadEEPROM (0x200); // read EEPROM address 0x200
|
||||||
|
225 WriteEEPROM (0x200, 6); // write 6 to EEPROM address 0x200
|
||||||
|
226 while (1);
|
||||||
|
227 }*/
|
||||||
|
228 //------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||||
|
CODE SIZE = 579 ----
|
||||||
|
CONSTANT SIZE = ---- ----
|
||||||
|
XDATA SIZE = ---- ----
|
||||||
|
PDATA SIZE = ---- ----
|
||||||
|
DATA SIZE = ---- 13
|
||||||
|
IDATA SIZE = ---- 20
|
||||||
|
BIT SIZE = ---- ----
|
||||||
|
END OF MODULE INFORMATION.
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,228 @@
|
||||||
|
// Reads from & writes to eeprom
|
||||||
|
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REGF51RC.H>
|
||||||
|
|
||||||
|
//#include <REG51.H>
|
||||||
|
#include <REGX55.H>
|
||||||
|
|
||||||
|
#include <absacc.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <intrins.h>
|
||||||
|
|
||||||
|
#include <eeprom.h>
|
||||||
|
#include <utility.h>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
void start(void);
|
||||||
|
void stop(void);
|
||||||
|
void write_data(unsigned char d);
|
||||||
|
unsigned char read_data(void);
|
||||||
|
void ack(void);
|
||||||
|
|
||||||
|
sbit sda=P3^6;
|
||||||
|
sbit scl=P3^7;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
extern unsigned char idata EEPROM_block;
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void write_eeprom(unsigned char wa,unsigned char wd)
|
||||||
|
{
|
||||||
|
rst_wdt();
|
||||||
|
start();
|
||||||
|
//write_data(0xA0);
|
||||||
|
write_data(EEPROM_block);
|
||||||
|
ack();
|
||||||
|
write_data(wa); // Write to EEPROM.
|
||||||
|
ack(); // wa = word address &
|
||||||
|
write_data(wd); // wd = data to be written.
|
||||||
|
ack();
|
||||||
|
stop();
|
||||||
|
delay(20);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
unsigned char read_eeprom(unsigned char wa)
|
||||||
|
{
|
||||||
|
unsigned char d1;
|
||||||
|
|
||||||
|
rst_wdt();
|
||||||
|
start();
|
||||||
|
//write_data(0xA0); // Read from eeprom.
|
||||||
|
write_data(EEPROM_block);
|
||||||
|
ack(); // returns the data.
|
||||||
|
write_data(wa);
|
||||||
|
ack();
|
||||||
|
start();
|
||||||
|
//write_data(0xA1);
|
||||||
|
write_data(EEPROM_block+0x01);
|
||||||
|
ack();
|
||||||
|
d1=read_data();
|
||||||
|
sda = 1;
|
||||||
|
ack();
|
||||||
|
stop();
|
||||||
|
return(d1);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void start(void)
|
||||||
|
{
|
||||||
|
sda = 1;
|
||||||
|
scl = 1;
|
||||||
|
nop();
|
||||||
|
sda = 0;
|
||||||
|
nop();
|
||||||
|
scl = 0;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void stop(void)
|
||||||
|
{
|
||||||
|
sda = 0;
|
||||||
|
nop();
|
||||||
|
scl = 1;
|
||||||
|
nop();
|
||||||
|
sda = 1;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void write_data(unsigned char d)
|
||||||
|
{
|
||||||
|
unsigned char i;
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
if(d & 0x80) sda = 1;
|
||||||
|
else sda = 0;
|
||||||
|
nop();
|
||||||
|
scl = 1;
|
||||||
|
nop();
|
||||||
|
scl = 0;
|
||||||
|
d<<=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
unsigned char read_data(void)
|
||||||
|
{
|
||||||
|
unsigned char i,d2;
|
||||||
|
d2 = 0x00;
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
d2<<=1;
|
||||||
|
scl = 0;
|
||||||
|
nop();
|
||||||
|
scl = 1;
|
||||||
|
if(sda) d2 = d2 | 0x01;
|
||||||
|
else d2 = d2 | 0x00;
|
||||||
|
}
|
||||||
|
scl = 0;
|
||||||
|
return(d2);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void ack(void)
|
||||||
|
{
|
||||||
|
sda = 1;
|
||||||
|
nop();
|
||||||
|
scl = 1;
|
||||||
|
nop();
|
||||||
|
scl = 0;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void write_RTC(unsigned char wa,unsigned char wd)
|
||||||
|
{
|
||||||
|
rst_wdt();
|
||||||
|
start();
|
||||||
|
write_data(0xD0);
|
||||||
|
ack();
|
||||||
|
write_data(wa); // Write to RTC.
|
||||||
|
ack(); // wa = word address &
|
||||||
|
write_data(wd); // wd = data to be written.
|
||||||
|
ack();
|
||||||
|
stop();
|
||||||
|
delay(20);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
unsigned char read_RTC(unsigned char wa)
|
||||||
|
{
|
||||||
|
unsigned char d1;
|
||||||
|
|
||||||
|
rst_wdt();
|
||||||
|
start();
|
||||||
|
write_data(0xD0); // Read from RTC.
|
||||||
|
ack(); // returns the data.
|
||||||
|
write_data(wa);
|
||||||
|
ack();
|
||||||
|
start();
|
||||||
|
write_data(0xD1);
|
||||||
|
ack();
|
||||||
|
d1=read_data();
|
||||||
|
sda = 1;
|
||||||
|
ack();
|
||||||
|
stop();
|
||||||
|
return(d1);
|
||||||
|
}
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
//This function will write a 4 byte (32bit) long to the eeprom at
|
||||||
|
//the specified address to adress + 3.
|
||||||
|
void RTC_Writelong(unsigned char address,unsigned long value)
|
||||||
|
{
|
||||||
|
//Decomposition from a long to 4 bytes by using bitshift.
|
||||||
|
//One = Most significant -> Four = Least significant byte
|
||||||
|
idata unsigned char four = (value & 0xFF);
|
||||||
|
idata unsigned char three = ((value >> 8) & 0xFF);
|
||||||
|
idata unsigned char two = ((value >> 16) & 0xFF);
|
||||||
|
idata unsigned char one = ((value >> 24) & 0xFF);
|
||||||
|
|
||||||
|
//Write the 4 bytes into the eeprom memory.
|
||||||
|
write_RTC(address, four);
|
||||||
|
write_RTC(address + 1, three);
|
||||||
|
write_RTC(address + 2, two);
|
||||||
|
write_RTC(address + 3, one);
|
||||||
|
}
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
//This function will return a 4 byte (32bit) long from the eeprom
|
||||||
|
//at the specified address to adress + 3.
|
||||||
|
unsigned long RTC_Readlong(unsigned char address)
|
||||||
|
{
|
||||||
|
//Read the 4 bytes from the eeprom memory.
|
||||||
|
idata unsigned long four = read_RTC(address);
|
||||||
|
idata unsigned long three = read_RTC(address + 1);
|
||||||
|
idata unsigned long two = read_RTC(address + 2);
|
||||||
|
idata unsigned long one = read_RTC(address + 3);
|
||||||
|
|
||||||
|
//Return the recomposed long by using bitshift.
|
||||||
|
return (((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFFFFF));
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
//===========================================================================================
|
||||||
|
//internal EEPROM usage
|
||||||
|
//#include <AT898252.H>
|
||||||
|
//#include <absacc.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return EEPROM Byte at address 'adr'
|
||||||
|
*/
|
||||||
|
/*unsigned char ReadEEPROM (unsigned int adr) {
|
||||||
|
unsigned char v;
|
||||||
|
|
||||||
|
WMCON |= EEMEN_; // enable EEPROM
|
||||||
|
v = XBYTE[adr]; // read value
|
||||||
|
WMCON &= ~EEMEN_; // disable EEPROM
|
||||||
|
return (v);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write EEPROM Byte 'val' at address 'adr'
|
||||||
|
*/
|
||||||
|
/*void WriteEEPROM (unsigned int adr, unsigned char val) {
|
||||||
|
WMCON |= (EEMEN_ | EEMWE_); // enable EEPROM and set write bit
|
||||||
|
XBYTE[adr] = val; // write value
|
||||||
|
while ((WMCON & EERDY_) == 0); // wait until value programmed
|
||||||
|
WMCON &= ~(EEMWE_ | EEMEN_); // disable EEPROM and write strobe
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
unsigned char v;
|
||||||
|
|
||||||
|
void main (void) {
|
||||||
|
v = ReadEEPROM (0x200); // read EEPROM address 0x200
|
||||||
|
WriteEEPROM (0x200, 6); // write 6 to EEPROM address 0x200
|
||||||
|
while (1);
|
||||||
|
}*/
|
||||||
|
//------------------------------------------------------------------
|
||||||
|
|
@ -0,0 +1,72 @@
|
||||||
|
#ifndef __EEPROM_H__
|
||||||
|
#define __EEPROM_H__
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#define Block_0 0xA0 //'EEPROM Block 256 bytes in 24C08
|
||||||
|
#define Block_1 0xA2
|
||||||
|
#define Block_2 0xA4
|
||||||
|
#define Block_3 0xA6
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#define EE_test_loc_Mem 0x00 //1 byte
|
||||||
|
#define EE_cal_val_Mem_MSB 0x01 //2 byte
|
||||||
|
#define EE_cal_val_Mem_LSB 0x02
|
||||||
|
#define EE_zset_Mem_MSB 0x03 //2 byte
|
||||||
|
#define EE_zset_Mem_LSB 0x04
|
||||||
|
#define EE_rng_val_Mem 0x05 //1 byte
|
||||||
|
#define EE_res_Mem 0x06 //1 byte
|
||||||
|
#define EE_mas_Mem 0x07 //1 byte
|
||||||
|
#define EE_ztc_Mem 0x08 //1 byte
|
||||||
|
#define EE_dp_val_mem 0x09 //1 byte
|
||||||
|
#define EE_avg_Mem 0x0A //1 byte
|
||||||
|
#define EE_wait_val_Mem 0x0B //1 byte
|
||||||
|
#define EE_drop_wait_val_Mem 0x0C //1 byte
|
||||||
|
#define EE_on_time_Mem 0x0D //1 byte
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
//08h–3Fh RAM 56 x 8 (DS1307)
|
||||||
|
#define RTC_MEM_current_recipe 0x08 //1 byte
|
||||||
|
#define RTC_MEM_Auto_start_enable 0x09 //1 byte
|
||||||
|
#define RTC_MEM_start_delay 0x0A //1 byte
|
||||||
|
#define RTC_MEM_recipe_enable 0x0B //1 byte
|
||||||
|
#define RTC_MEM_gross_weight_enable 0x0C //1 byte
|
||||||
|
//#define RTC_MEM_start_status 0x0D //1 byte
|
||||||
|
#define RTC_MEM_Instant_fill_enable 0x0E //1 byte
|
||||||
|
#define RTC_MEM_status 0x0F //1 byte
|
||||||
|
|
||||||
|
#define RTC_MEM_F1_batch_MSB 0x10 //1 byte
|
||||||
|
#define RTC_MEM_F1_batch_LSB 0x11 //1 byte
|
||||||
|
#define RTC_MEM_F2_batch_MSB 0x12 //1 byte
|
||||||
|
#define RTC_MEM_F2_batch_LSB 0x13 //1 byte
|
||||||
|
#define RTC_MEM_F3_batch_MSB 0x14 //1 byte
|
||||||
|
#define RTC_MEM_F3_batch_LSB 0x15 //1 byte
|
||||||
|
#define RTC_MEM_F4_batch_MSB 0x16 //1 byte
|
||||||
|
#define RTC_MEM_F4_batch_LSB 0x17 //1 byte
|
||||||
|
#define RTC_MEM_F5_batch_MSB 0x18 //1 byte
|
||||||
|
#define RTC_MEM_F5_batch_LSB 0x19 //1 byte
|
||||||
|
|
||||||
|
#define RTC_MEM_F1_cumulative 0x1A //4 byte
|
||||||
|
#define RTC_MEM_F2_cumulative 0x1E //4 byte
|
||||||
|
#define RTC_MEM_F3_cumulative 0x22 //4 byte
|
||||||
|
#define RTC_MEM_F4_cumulative 0x26 //4 byte
|
||||||
|
#define RTC_MEM_F5_cumulative 0x2A //4 byte
|
||||||
|
|
||||||
|
#define RTC_MEM_F6_TO_F36_batch_MSB 0x2E //1 byte
|
||||||
|
#define RTC_MEM_F6_TO_F36_batch_LSB 0x2F //1 byte
|
||||||
|
#define RTC_MEM_F6_TO_F36_cumulative 0x30 //4 byte
|
||||||
|
|
||||||
|
#define RTC_MEM_batch_set_MSB 0x34 //1 byte
|
||||||
|
#define RTC_MEM_batch_set_LSB 0x35 //1 byte
|
||||||
|
#define RTC_MEM_batch_set_enable 0x36 //1 byte
|
||||||
|
|
||||||
|
#define RTC_MEM_batch_set_count_MSB 0x37 //1 byte
|
||||||
|
#define RTC_MEM_batch_set_count_LSB 0x38 //1 byte
|
||||||
|
|
||||||
|
#define RTC_fillset_MSB 0x39 //1 byte
|
||||||
|
#define RTC_fillset_LSB 0x3A //1 byte
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
void write_eeprom(unsigned char wa,unsigned char wd);
|
||||||
|
unsigned char read_eeprom(unsigned char wa);
|
||||||
|
void write_RTC(unsigned char wa,unsigned char wd);
|
||||||
|
unsigned char read_RTC(unsigned char wa);
|
||||||
|
void RTC_Writelong(unsigned char address,unsigned long value);
|
||||||
|
unsigned long RTC_Readlong(unsigned char address);
|
||||||
|
//-------------------------------------------------------------------------------
|
||||||
|
#endif
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,400 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||||
|
|
||||||
|
<SchemaVersion>1.0</SchemaVersion>
|
||||||
|
|
||||||
|
<Header>### uVision Project, (C) Keil Software</Header>
|
||||||
|
|
||||||
|
<Targets>
|
||||||
|
<Target>
|
||||||
|
<TargetName>Target 1</TargetName>
|
||||||
|
<ToolsetNumber>0x0</ToolsetNumber>
|
||||||
|
<ToolsetName>MCS-51</ToolsetName>
|
||||||
|
<TargetOption>
|
||||||
|
<TargetCommonOption>
|
||||||
|
<Device>AT89C55WD</Device>
|
||||||
|
<Vendor>Atmel</Vendor>
|
||||||
|
<Cpu>IRAM(0-0xFF) IROM(0-0x4FFF) CLOCK(33000000) MODAT2</Cpu>
|
||||||
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
|
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||||
|
<FlashDriverDll></FlashDriverDll>
|
||||||
|
<DeviceId>3414</DeviceId>
|
||||||
|
<RegisterFile>REGX55.H</RegisterFile>
|
||||||
|
<MemoryEnv></MemoryEnv>
|
||||||
|
<Cmp></Cmp>
|
||||||
|
<Asm></Asm>
|
||||||
|
<Linker></Linker>
|
||||||
|
<OHString></OHString>
|
||||||
|
<InfinionOptionDll></InfinionOptionDll>
|
||||||
|
<SLE66CMisc></SLE66CMisc>
|
||||||
|
<SLE66AMisc></SLE66AMisc>
|
||||||
|
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||||
|
<UseEnv>0</UseEnv>
|
||||||
|
<BinPath></BinPath>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
<LibPath></LibPath>
|
||||||
|
<RegisterFilePath>Atmel\</RegisterFilePath>
|
||||||
|
<DBRegisterFilePath>Atmel\</DBRegisterFilePath>
|
||||||
|
<TargetStatus>
|
||||||
|
<Error>0</Error>
|
||||||
|
<ExitCodeStop>0</ExitCodeStop>
|
||||||
|
<ButtonStop>0</ButtonStop>
|
||||||
|
<NotGenerated>0</NotGenerated>
|
||||||
|
<InvalidFlash>1</InvalidFlash>
|
||||||
|
</TargetStatus>
|
||||||
|
<OutputDirectory>.\</OutputDirectory>
|
||||||
|
<OutputName>Tin_fill_4x4_key_36Recipe_ad7780_55WD_default</OutputName>
|
||||||
|
<CreateExecutable>1</CreateExecutable>
|
||||||
|
<CreateLib>0</CreateLib>
|
||||||
|
<CreateHexFile>1</CreateHexFile>
|
||||||
|
<DebugInformation>1</DebugInformation>
|
||||||
|
<BrowseInformation>1</BrowseInformation>
|
||||||
|
<ListingPath>.\</ListingPath>
|
||||||
|
<HexFormatSelection>0</HexFormatSelection>
|
||||||
|
<Merge32K>0</Merge32K>
|
||||||
|
<CreateBatchFile>0</CreateBatchFile>
|
||||||
|
<BeforeCompile>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
</BeforeCompile>
|
||||||
|
<BeforeMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
</BeforeMake>
|
||||||
|
<AfterMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name>D:\VEN\CPGM\fill\Tin\h.bat fill</UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
</AfterMake>
|
||||||
|
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||||
|
<SVCSIdString></SVCSIdString>
|
||||||
|
</TargetCommonOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>0</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>1</IncludeInBuild>
|
||||||
|
<AlwaysBuild>0</AlwaysBuild>
|
||||||
|
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||||
|
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||||
|
<PublicsOnly>0</PublicsOnly>
|
||||||
|
<StopOnExitCode>3</StopOnExitCode>
|
||||||
|
<CustomArgument></CustomArgument>
|
||||||
|
<IncludeLibraryModules></IncludeLibraryModules>
|
||||||
|
<BankNo>65535</BankNo>
|
||||||
|
</CommonProperty>
|
||||||
|
<DllOption>
|
||||||
|
<SimDllName>S8051.DLL</SimDllName>
|
||||||
|
<SimDllArguments></SimDllArguments>
|
||||||
|
<SimDlgDll>DP51.DLL</SimDlgDll>
|
||||||
|
<SimDlgDllArguments>-pAT52</SimDlgDllArguments>
|
||||||
|
<TargetDllName>S8051.DLL</TargetDllName>
|
||||||
|
<TargetDllArguments></TargetDllArguments>
|
||||||
|
<TargetDlgDll>TP51.DLL</TargetDlgDll>
|
||||||
|
<TargetDlgDllArguments>-pAT52</TargetDlgDllArguments>
|
||||||
|
</DllOption>
|
||||||
|
<DebugOption>
|
||||||
|
<OPTHX>
|
||||||
|
<HexSelection>0</HexSelection>
|
||||||
|
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||||
|
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||||
|
<HexOffset>0</HexOffset>
|
||||||
|
<Oh166RecLen>16</Oh166RecLen>
|
||||||
|
</OPTHX>
|
||||||
|
<Simulator>
|
||||||
|
<UseSimulator>1</UseSimulator>
|
||||||
|
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||||
|
<RunToMain>1</RunToMain>
|
||||||
|
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||||
|
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||||
|
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||||
|
<RestoreFunctions>1</RestoreFunctions>
|
||||||
|
<RestoreToolbox>1</RestoreToolbox>
|
||||||
|
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||||
|
</Simulator>
|
||||||
|
<Target>
|
||||||
|
<UseTarget>0</UseTarget>
|
||||||
|
<LoadApplicationAtStartup>0</LoadApplicationAtStartup>
|
||||||
|
<RunToMain>0</RunToMain>
|
||||||
|
<RestoreBreakpoints>0</RestoreBreakpoints>
|
||||||
|
<RestoreWatchpoints>0</RestoreWatchpoints>
|
||||||
|
<RestoreMemoryDisplay>0</RestoreMemoryDisplay>
|
||||||
|
<RestoreFunctions>0</RestoreFunctions>
|
||||||
|
<RestoreToolbox>0</RestoreToolbox>
|
||||||
|
</Target>
|
||||||
|
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||||
|
<TargetSelection>0</TargetSelection>
|
||||||
|
<SimDlls>
|
||||||
|
<CpuDll></CpuDll>
|
||||||
|
<CpuDllArguments></CpuDllArguments>
|
||||||
|
<PeripheralDll></PeripheralDll>
|
||||||
|
<PeripheralDllArguments></PeripheralDllArguments>
|
||||||
|
<InitializationFile></InitializationFile>
|
||||||
|
</SimDlls>
|
||||||
|
<TargetDlls>
|
||||||
|
<CpuDll></CpuDll>
|
||||||
|
<CpuDllArguments></CpuDllArguments>
|
||||||
|
<PeripheralDll></PeripheralDll>
|
||||||
|
<PeripheralDllArguments></PeripheralDllArguments>
|
||||||
|
<InitializationFile></InitializationFile>
|
||||||
|
<Driver></Driver>
|
||||||
|
</TargetDlls>
|
||||||
|
</DebugOption>
|
||||||
|
<Utilities>
|
||||||
|
<Flash1>
|
||||||
|
<UseTargetDll>1</UseTargetDll>
|
||||||
|
<UseExternalTool>0</UseExternalTool>
|
||||||
|
<RunIndependent>0</RunIndependent>
|
||||||
|
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||||
|
<Capability>0</Capability>
|
||||||
|
<DriverSelection>0</DriverSelection>
|
||||||
|
</Flash1>
|
||||||
|
<Flash2></Flash2>
|
||||||
|
<Flash3></Flash3>
|
||||||
|
<Flash4></Flash4>
|
||||||
|
</Utilities>
|
||||||
|
<Target51>
|
||||||
|
<Target51Misc>
|
||||||
|
<MemoryModel>0</MemoryModel>
|
||||||
|
<RTOS>0</RTOS>
|
||||||
|
<RomSize>2</RomSize>
|
||||||
|
<DataHold>0</DataHold>
|
||||||
|
<XDataHold>0</XDataHold>
|
||||||
|
<UseOnchipRom>0</UseOnchipRom>
|
||||||
|
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||||
|
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||||
|
<UseOnchipXram>0</UseOnchipXram>
|
||||||
|
<HadIRAM>1</HadIRAM>
|
||||||
|
<HadXRAM>0</HadXRAM>
|
||||||
|
<HadIROM>1</HadIROM>
|
||||||
|
<Moda2>0</Moda2>
|
||||||
|
<Moddp2>0</Moddp2>
|
||||||
|
<Modp2>0</Modp2>
|
||||||
|
<Mod517dp>0</Mod517dp>
|
||||||
|
<Mod517au>0</Mod517au>
|
||||||
|
<Mode2>0</Mode2>
|
||||||
|
<useCB>0</useCB>
|
||||||
|
<useXB>0</useXB>
|
||||||
|
<useL251>0</useL251>
|
||||||
|
<useA251>0</useA251>
|
||||||
|
<Mx51>0</Mx51>
|
||||||
|
<ModC812>0</ModC812>
|
||||||
|
<ModCont>0</ModCont>
|
||||||
|
<Lp51>0</Lp51>
|
||||||
|
<useXBS>0</useXBS>
|
||||||
|
<ModDA>0</ModDA>
|
||||||
|
<ModAB2>0</ModAB2>
|
||||||
|
<Mx51P>0</Mx51P>
|
||||||
|
<hadXRAM2>0</hadXRAM2>
|
||||||
|
<uocXram2>0</uocXram2>
|
||||||
|
<ModC2>0</ModC2>
|
||||||
|
<ModH2>0</ModH2>
|
||||||
|
<Mdu_R515>0</Mdu_R515>
|
||||||
|
<Mdu_F120>0</Mdu_F120>
|
||||||
|
<Psoc>0</Psoc>
|
||||||
|
<hadIROM2>0</hadIROM2>
|
||||||
|
<ModSmx2>0</ModSmx2>
|
||||||
|
<cBanks>0</cBanks>
|
||||||
|
<xBanks>0</xBanks>
|
||||||
|
<OnChipMemories>
|
||||||
|
<RCB>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0xffff</Size>
|
||||||
|
</RCB>
|
||||||
|
<RXB>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</RXB>
|
||||||
|
<Ocm1>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm1>
|
||||||
|
<Ocm2>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm2>
|
||||||
|
<Ocm3>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm3>
|
||||||
|
<Ocr1>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocr1>
|
||||||
|
<Ocr2>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocr2>
|
||||||
|
<Ocr3>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocr3>
|
||||||
|
<IRO>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x5000</Size>
|
||||||
|
</IRO>
|
||||||
|
<IRA>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x100</Size>
|
||||||
|
</IRA>
|
||||||
|
<XRA>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</XRA>
|
||||||
|
<XRA512>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</XRA512>
|
||||||
|
<IROM512>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</IROM512>
|
||||||
|
</OnChipMemories>
|
||||||
|
</Target51Misc>
|
||||||
|
<C51>
|
||||||
|
<RegisterColoring>0</RegisterColoring>
|
||||||
|
<VariablesInOrder>0</VariablesInOrder>
|
||||||
|
<IntegerPromotion>1</IntegerPromotion>
|
||||||
|
<uAregs>0</uAregs>
|
||||||
|
<UseInterruptVector>1</UseInterruptVector>
|
||||||
|
<Fuzzy>3</Fuzzy>
|
||||||
|
<Optimize>8</Optimize>
|
||||||
|
<WarningLevel>2</WarningLevel>
|
||||||
|
<SizeSpeed>1</SizeSpeed>
|
||||||
|
<ObjectExtend>1</ObjectExtend>
|
||||||
|
<ACallAJmp>0</ACallAJmp>
|
||||||
|
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</C51>
|
||||||
|
<Ax51>
|
||||||
|
<UseMpl>0</UseMpl>
|
||||||
|
<UseStandard>1</UseStandard>
|
||||||
|
<UseCase>0</UseCase>
|
||||||
|
<UseMod51>0</UseMod51>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</Ax51>
|
||||||
|
<Lx51>
|
||||||
|
<useFile>0</useFile>
|
||||||
|
<linkonly>0</linkonly>
|
||||||
|
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||||
|
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||||
|
<WarningLevel>2</WarningLevel>
|
||||||
|
<DataOverlaying>1</DataOverlaying>
|
||||||
|
<OverlayString></OverlayString>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<DisableWarningNumbers></DisableWarningNumbers>
|
||||||
|
<LinkerCmdFile></LinkerCmdFile>
|
||||||
|
<Assign></Assign>
|
||||||
|
<ReserveString></ReserveString>
|
||||||
|
<CClasses></CClasses>
|
||||||
|
<UserClasses></UserClasses>
|
||||||
|
<CSection></CSection>
|
||||||
|
<UserSection></UserSection>
|
||||||
|
<CodeBaseAddress></CodeBaseAddress>
|
||||||
|
<XDataBaseAddress></XDataBaseAddress>
|
||||||
|
<PDataBaseAddress></PDataBaseAddress>
|
||||||
|
<BitBaseAddress></BitBaseAddress>
|
||||||
|
<DataBaseAddress></DataBaseAddress>
|
||||||
|
<IDataBaseAddress></IDataBaseAddress>
|
||||||
|
<Precede></Precede>
|
||||||
|
<Stack></Stack>
|
||||||
|
<CodeSegmentName></CodeSegmentName>
|
||||||
|
<XDataSegmentName></XDataSegmentName>
|
||||||
|
<BitSegmentName></BitSegmentName>
|
||||||
|
<DataSegmentName></DataSegmentName>
|
||||||
|
<IDataSegmentName></IDataSegmentName>
|
||||||
|
</Lx51>
|
||||||
|
</Target51>
|
||||||
|
</TargetOption>
|
||||||
|
<Groups>
|
||||||
|
<Group>
|
||||||
|
<GroupName>Source Group 1</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>main.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\main.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>ser_disp.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\ser_disp.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>utility.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\utility.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>eeprom.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\eeprom.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>4x4_key.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\4x4_key.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>ADC_AD7780.C</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\ADC_AD7780.C</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>ADC_HX711.C</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\ADC_HX711.C</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>Documentation</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>Notes.txt</FileName>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<FilePath>.\Notes.txt</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
|
</Groups>
|
||||||
|
</Target>
|
||||||
|
</Targets>
|
||||||
|
|
||||||
|
</Project>
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,400 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||||
|
|
||||||
|
<SchemaVersion>1.0</SchemaVersion>
|
||||||
|
|
||||||
|
<Header>### uVision Project, (C) Keil Software</Header>
|
||||||
|
|
||||||
|
<Targets>
|
||||||
|
<Target>
|
||||||
|
<TargetName>Target 1</TargetName>
|
||||||
|
<ToolsetNumber>0x0</ToolsetNumber>
|
||||||
|
<ToolsetName>MCS-51</ToolsetName>
|
||||||
|
<TargetOption>
|
||||||
|
<TargetCommonOption>
|
||||||
|
<Device>AT89C55WD</Device>
|
||||||
|
<Vendor>Atmel</Vendor>
|
||||||
|
<Cpu>IRAM(0-0xFF) IROM(0-0x4FFF) CLOCK(33000000) MODAT2</Cpu>
|
||||||
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
|
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||||
|
<FlashDriverDll></FlashDriverDll>
|
||||||
|
<DeviceId>3414</DeviceId>
|
||||||
|
<RegisterFile>REGX55.H</RegisterFile>
|
||||||
|
<MemoryEnv></MemoryEnv>
|
||||||
|
<Cmp></Cmp>
|
||||||
|
<Asm></Asm>
|
||||||
|
<Linker></Linker>
|
||||||
|
<OHString></OHString>
|
||||||
|
<InfinionOptionDll></InfinionOptionDll>
|
||||||
|
<SLE66CMisc></SLE66CMisc>
|
||||||
|
<SLE66AMisc></SLE66AMisc>
|
||||||
|
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||||
|
<UseEnv>0</UseEnv>
|
||||||
|
<BinPath></BinPath>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
<LibPath></LibPath>
|
||||||
|
<RegisterFilePath>Atmel\</RegisterFilePath>
|
||||||
|
<DBRegisterFilePath>Atmel\</DBRegisterFilePath>
|
||||||
|
<TargetStatus>
|
||||||
|
<Error>0</Error>
|
||||||
|
<ExitCodeStop>0</ExitCodeStop>
|
||||||
|
<ButtonStop>0</ButtonStop>
|
||||||
|
<NotGenerated>0</NotGenerated>
|
||||||
|
<InvalidFlash>1</InvalidFlash>
|
||||||
|
</TargetStatus>
|
||||||
|
<OutputDirectory>.\</OutputDirectory>
|
||||||
|
<OutputName>Tin_fill_4x4_key_36Recipe_ad7780_55WD</OutputName>
|
||||||
|
<CreateExecutable>1</CreateExecutable>
|
||||||
|
<CreateLib>0</CreateLib>
|
||||||
|
<CreateHexFile>1</CreateHexFile>
|
||||||
|
<DebugInformation>1</DebugInformation>
|
||||||
|
<BrowseInformation>1</BrowseInformation>
|
||||||
|
<ListingPath>.\</ListingPath>
|
||||||
|
<HexFormatSelection>0</HexFormatSelection>
|
||||||
|
<Merge32K>0</Merge32K>
|
||||||
|
<CreateBatchFile>0</CreateBatchFile>
|
||||||
|
<BeforeCompile>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
</BeforeCompile>
|
||||||
|
<BeforeMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
</BeforeMake>
|
||||||
|
<AfterMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name>D:\VEN\CPGM\fill\Tin\h.bat fill</UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
</AfterMake>
|
||||||
|
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||||
|
<SVCSIdString></SVCSIdString>
|
||||||
|
</TargetCommonOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>0</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>1</IncludeInBuild>
|
||||||
|
<AlwaysBuild>0</AlwaysBuild>
|
||||||
|
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||||
|
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||||
|
<PublicsOnly>0</PublicsOnly>
|
||||||
|
<StopOnExitCode>3</StopOnExitCode>
|
||||||
|
<CustomArgument></CustomArgument>
|
||||||
|
<IncludeLibraryModules></IncludeLibraryModules>
|
||||||
|
<BankNo>65535</BankNo>
|
||||||
|
</CommonProperty>
|
||||||
|
<DllOption>
|
||||||
|
<SimDllName>S8051.DLL</SimDllName>
|
||||||
|
<SimDllArguments></SimDllArguments>
|
||||||
|
<SimDlgDll>DP51.DLL</SimDlgDll>
|
||||||
|
<SimDlgDllArguments>-pAT52</SimDlgDllArguments>
|
||||||
|
<TargetDllName>S8051.DLL</TargetDllName>
|
||||||
|
<TargetDllArguments></TargetDllArguments>
|
||||||
|
<TargetDlgDll>TP51.DLL</TargetDlgDll>
|
||||||
|
<TargetDlgDllArguments>-pAT52</TargetDlgDllArguments>
|
||||||
|
</DllOption>
|
||||||
|
<DebugOption>
|
||||||
|
<OPTHX>
|
||||||
|
<HexSelection>0</HexSelection>
|
||||||
|
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||||
|
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||||
|
<HexOffset>0</HexOffset>
|
||||||
|
<Oh166RecLen>16</Oh166RecLen>
|
||||||
|
</OPTHX>
|
||||||
|
<Simulator>
|
||||||
|
<UseSimulator>1</UseSimulator>
|
||||||
|
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||||
|
<RunToMain>1</RunToMain>
|
||||||
|
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||||
|
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||||
|
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||||
|
<RestoreFunctions>1</RestoreFunctions>
|
||||||
|
<RestoreToolbox>1</RestoreToolbox>
|
||||||
|
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||||
|
</Simulator>
|
||||||
|
<Target>
|
||||||
|
<UseTarget>0</UseTarget>
|
||||||
|
<LoadApplicationAtStartup>0</LoadApplicationAtStartup>
|
||||||
|
<RunToMain>0</RunToMain>
|
||||||
|
<RestoreBreakpoints>0</RestoreBreakpoints>
|
||||||
|
<RestoreWatchpoints>0</RestoreWatchpoints>
|
||||||
|
<RestoreMemoryDisplay>0</RestoreMemoryDisplay>
|
||||||
|
<RestoreFunctions>0</RestoreFunctions>
|
||||||
|
<RestoreToolbox>0</RestoreToolbox>
|
||||||
|
</Target>
|
||||||
|
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||||
|
<TargetSelection>0</TargetSelection>
|
||||||
|
<SimDlls>
|
||||||
|
<CpuDll></CpuDll>
|
||||||
|
<CpuDllArguments></CpuDllArguments>
|
||||||
|
<PeripheralDll></PeripheralDll>
|
||||||
|
<PeripheralDllArguments></PeripheralDllArguments>
|
||||||
|
<InitializationFile></InitializationFile>
|
||||||
|
</SimDlls>
|
||||||
|
<TargetDlls>
|
||||||
|
<CpuDll></CpuDll>
|
||||||
|
<CpuDllArguments></CpuDllArguments>
|
||||||
|
<PeripheralDll></PeripheralDll>
|
||||||
|
<PeripheralDllArguments></PeripheralDllArguments>
|
||||||
|
<InitializationFile></InitializationFile>
|
||||||
|
<Driver></Driver>
|
||||||
|
</TargetDlls>
|
||||||
|
</DebugOption>
|
||||||
|
<Utilities>
|
||||||
|
<Flash1>
|
||||||
|
<UseTargetDll>1</UseTargetDll>
|
||||||
|
<UseExternalTool>0</UseExternalTool>
|
||||||
|
<RunIndependent>0</RunIndependent>
|
||||||
|
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||||
|
<Capability>0</Capability>
|
||||||
|
<DriverSelection>0</DriverSelection>
|
||||||
|
</Flash1>
|
||||||
|
<Flash2></Flash2>
|
||||||
|
<Flash3></Flash3>
|
||||||
|
<Flash4></Flash4>
|
||||||
|
</Utilities>
|
||||||
|
<Target51>
|
||||||
|
<Target51Misc>
|
||||||
|
<MemoryModel>0</MemoryModel>
|
||||||
|
<RTOS>0</RTOS>
|
||||||
|
<RomSize>2</RomSize>
|
||||||
|
<DataHold>0</DataHold>
|
||||||
|
<XDataHold>0</XDataHold>
|
||||||
|
<UseOnchipRom>0</UseOnchipRom>
|
||||||
|
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||||
|
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||||
|
<UseOnchipXram>0</UseOnchipXram>
|
||||||
|
<HadIRAM>1</HadIRAM>
|
||||||
|
<HadXRAM>0</HadXRAM>
|
||||||
|
<HadIROM>1</HadIROM>
|
||||||
|
<Moda2>0</Moda2>
|
||||||
|
<Moddp2>0</Moddp2>
|
||||||
|
<Modp2>0</Modp2>
|
||||||
|
<Mod517dp>0</Mod517dp>
|
||||||
|
<Mod517au>0</Mod517au>
|
||||||
|
<Mode2>0</Mode2>
|
||||||
|
<useCB>0</useCB>
|
||||||
|
<useXB>0</useXB>
|
||||||
|
<useL251>0</useL251>
|
||||||
|
<useA251>0</useA251>
|
||||||
|
<Mx51>0</Mx51>
|
||||||
|
<ModC812>0</ModC812>
|
||||||
|
<ModCont>0</ModCont>
|
||||||
|
<Lp51>0</Lp51>
|
||||||
|
<useXBS>0</useXBS>
|
||||||
|
<ModDA>0</ModDA>
|
||||||
|
<ModAB2>0</ModAB2>
|
||||||
|
<Mx51P>0</Mx51P>
|
||||||
|
<hadXRAM2>0</hadXRAM2>
|
||||||
|
<uocXram2>0</uocXram2>
|
||||||
|
<ModC2>0</ModC2>
|
||||||
|
<ModH2>0</ModH2>
|
||||||
|
<Mdu_R515>0</Mdu_R515>
|
||||||
|
<Mdu_F120>0</Mdu_F120>
|
||||||
|
<Psoc>0</Psoc>
|
||||||
|
<hadIROM2>0</hadIROM2>
|
||||||
|
<ModSmx2>0</ModSmx2>
|
||||||
|
<cBanks>0</cBanks>
|
||||||
|
<xBanks>0</xBanks>
|
||||||
|
<OnChipMemories>
|
||||||
|
<RCB>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0xffff</Size>
|
||||||
|
</RCB>
|
||||||
|
<RXB>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</RXB>
|
||||||
|
<Ocm1>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm1>
|
||||||
|
<Ocm2>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm2>
|
||||||
|
<Ocm3>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm3>
|
||||||
|
<Ocr1>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocr1>
|
||||||
|
<Ocr2>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocr2>
|
||||||
|
<Ocr3>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocr3>
|
||||||
|
<IRO>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x5000</Size>
|
||||||
|
</IRO>
|
||||||
|
<IRA>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x100</Size>
|
||||||
|
</IRA>
|
||||||
|
<XRA>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</XRA>
|
||||||
|
<XRA512>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</XRA512>
|
||||||
|
<IROM512>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</IROM512>
|
||||||
|
</OnChipMemories>
|
||||||
|
</Target51Misc>
|
||||||
|
<C51>
|
||||||
|
<RegisterColoring>0</RegisterColoring>
|
||||||
|
<VariablesInOrder>0</VariablesInOrder>
|
||||||
|
<IntegerPromotion>1</IntegerPromotion>
|
||||||
|
<uAregs>0</uAregs>
|
||||||
|
<UseInterruptVector>1</UseInterruptVector>
|
||||||
|
<Fuzzy>3</Fuzzy>
|
||||||
|
<Optimize>8</Optimize>
|
||||||
|
<WarningLevel>2</WarningLevel>
|
||||||
|
<SizeSpeed>1</SizeSpeed>
|
||||||
|
<ObjectExtend>1</ObjectExtend>
|
||||||
|
<ACallAJmp>0</ACallAJmp>
|
||||||
|
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</C51>
|
||||||
|
<Ax51>
|
||||||
|
<UseMpl>0</UseMpl>
|
||||||
|
<UseStandard>1</UseStandard>
|
||||||
|
<UseCase>0</UseCase>
|
||||||
|
<UseMod51>0</UseMod51>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</Ax51>
|
||||||
|
<Lx51>
|
||||||
|
<useFile>0</useFile>
|
||||||
|
<linkonly>0</linkonly>
|
||||||
|
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||||
|
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||||
|
<WarningLevel>2</WarningLevel>
|
||||||
|
<DataOverlaying>1</DataOverlaying>
|
||||||
|
<OverlayString></OverlayString>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<DisableWarningNumbers></DisableWarningNumbers>
|
||||||
|
<LinkerCmdFile></LinkerCmdFile>
|
||||||
|
<Assign></Assign>
|
||||||
|
<ReserveString></ReserveString>
|
||||||
|
<CClasses></CClasses>
|
||||||
|
<UserClasses></UserClasses>
|
||||||
|
<CSection></CSection>
|
||||||
|
<UserSection></UserSection>
|
||||||
|
<CodeBaseAddress></CodeBaseAddress>
|
||||||
|
<XDataBaseAddress></XDataBaseAddress>
|
||||||
|
<PDataBaseAddress></PDataBaseAddress>
|
||||||
|
<BitBaseAddress></BitBaseAddress>
|
||||||
|
<DataBaseAddress></DataBaseAddress>
|
||||||
|
<IDataBaseAddress></IDataBaseAddress>
|
||||||
|
<Precede></Precede>
|
||||||
|
<Stack></Stack>
|
||||||
|
<CodeSegmentName></CodeSegmentName>
|
||||||
|
<XDataSegmentName></XDataSegmentName>
|
||||||
|
<BitSegmentName></BitSegmentName>
|
||||||
|
<DataSegmentName></DataSegmentName>
|
||||||
|
<IDataSegmentName></IDataSegmentName>
|
||||||
|
</Lx51>
|
||||||
|
</Target51>
|
||||||
|
</TargetOption>
|
||||||
|
<Groups>
|
||||||
|
<Group>
|
||||||
|
<GroupName>Source Group 1</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>main.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\main.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>ser_disp.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\ser_disp.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>utility.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\utility.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>eeprom.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\eeprom.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>4x4_key.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\4x4_key.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>ADC_AD7780.C</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\ADC_AD7780.C</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>ADC_HX711.C</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\ADC_HX711.C</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>Documentation</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>Notes.txt</FileName>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<FilePath>.\Notes.txt</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
|
</Groups>
|
||||||
|
</Target>
|
||||||
|
</Targets>
|
||||||
|
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
//INCLUDE KEYBOARD HEADER FILE
|
||||||
|
#include <REGX55.h>
|
||||||
|
#include <keyboard4x4.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
//DECLARE GLOABL VARIABLE
|
||||||
|
//--------------------------------------------------------------------------------
|
||||||
|
unsigned char find_col(unsigned char key)
|
||||||
|
{
|
||||||
|
key_data &= 0x0f;
|
||||||
|
rst_wdt();
|
||||||
|
if(key_data == 0x0d)
|
||||||
|
key++;
|
||||||
|
else if(key_data == 0x0b)
|
||||||
|
key +=2;
|
||||||
|
else if(key_data == 0x07)
|
||||||
|
key +=3;
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
//--------------------------------------------------------------------------------
|
||||||
|
unsigned char get_data()
|
||||||
|
{
|
||||||
|
unsigned char idata digit,time_out = 0;
|
||||||
|
unsigned char code a[] = "0123456789ABCD*#";
|
||||||
|
//unsigned char code a[] = "123A456B789C*0#D";
|
||||||
|
key_data = 0x0f;
|
||||||
|
|
||||||
|
/*while(key_data != 0x0f);
|
||||||
|
delay(40); */
|
||||||
|
while(key_data != 0x0f);
|
||||||
|
rst_wdt();
|
||||||
|
while(key_data == 0x0f)
|
||||||
|
{
|
||||||
|
delay(KEY_DELAY);
|
||||||
|
if(time_out++ == MAX_TIME_OUT)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//delay(20);
|
||||||
|
if((key_data = 0x7f) && MASK != 0x0f)
|
||||||
|
digit = find_col(0x00);
|
||||||
|
else if((key_data = 0xbf) && MASK != 0x0f)
|
||||||
|
digit = find_col(0x04);
|
||||||
|
else if((key_data = 0xdf) && MASK != 0x0f)
|
||||||
|
digit = find_col(0x08);
|
||||||
|
else if((key_data = 0xef) && MASK != 0x0f)
|
||||||
|
digit = find_col(0x0c);
|
||||||
|
|
||||||
|
return a[digit];
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef KEYBOARD4_4_H
|
||||||
|
#define KEYBOARD4_4_H
|
||||||
|
|
||||||
|
#include<REGX55.h>
|
||||||
|
|
||||||
|
|
||||||
|
//USER DEFINED DATA TYPE
|
||||||
|
//typedef unsigned char ubyte;
|
||||||
|
|
||||||
|
|
||||||
|
//DEFINE PORTS/PINS
|
||||||
|
#define key_data P0
|
||||||
|
|
||||||
|
//DEFINE CONSTANT
|
||||||
|
//#define KEY_DELAY 100
|
||||||
|
//#define MAX_TIME_OUT 100
|
||||||
|
#define KEY_DELAY 1
|
||||||
|
#define MAX_TIME_OUT 10
|
||||||
|
#define MASK (key_data & 0x0f)
|
||||||
|
|
||||||
|
//FUNCTION PROTOTYPES
|
||||||
|
unsigned char get_data();
|
||||||
|
unsigned char find_col(unsigned char);
|
||||||
|
|
||||||
|
#endif
|
||||||
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,205 @@
|
||||||
|
/*
|
||||||
|
* _4x4_key.c
|
||||||
|
*
|
||||||
|
* Created: 11-03-2015 15:22:49
|
||||||
|
* Author: stanly
|
||||||
|
*/
|
||||||
|
#include <REGX55.h>
|
||||||
|
#include <matrix_key.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
|
||||||
|
//extern unsigned char idata keyPressed, key_digit=0;
|
||||||
|
extern unsigned char idata KeyPressed;
|
||||||
|
unsigned char key_value[2]={0,0};
|
||||||
|
|
||||||
|
#define KB_PORT_OUT P0
|
||||||
|
#define KB_PORT_IN P0
|
||||||
|
|
||||||
|
//***********************************************************************/
|
||||||
|
void init_matrixKeypad(void)
|
||||||
|
{
|
||||||
|
P0=0x0F;
|
||||||
|
//pull_up_matrix_key_port;
|
||||||
|
}
|
||||||
|
|
||||||
|
void read_matrixKeypad(void)
|
||||||
|
{
|
||||||
|
//unsigned char upperNibble, keyCode, i, keyPressed;
|
||||||
|
unsigned char idata upperNibble, keyCode, i;
|
||||||
|
upperNibble = 0xff;
|
||||||
|
|
||||||
|
KeyPressed = '@'; //clearing every time
|
||||||
|
|
||||||
|
for(i=0; i<4; i++)
|
||||||
|
{
|
||||||
|
delay(1);
|
||||||
|
KB_PORT_OUT = ~(0x01 << i);
|
||||||
|
delay(1); //delay for port o/p settling
|
||||||
|
upperNibble = KB_PORT_IN | 0x0f;
|
||||||
|
|
||||||
|
if (upperNibble != 0xff)
|
||||||
|
{
|
||||||
|
delay(20); //key debouncing delay
|
||||||
|
upperNibble = KB_PORT_IN | 0x0f;
|
||||||
|
if(upperNibble == 0xff) goto OUT;
|
||||||
|
keyCode = (upperNibble & 0xf0) | (0x0f & ~(0x01 << i));
|
||||||
|
while (upperNibble != 0xff)
|
||||||
|
upperNibble = KB_PORT_IN | 0x0f;
|
||||||
|
delay(20); //key debouncing delay
|
||||||
|
switch (keyCode) //generating key character to display on LCD
|
||||||
|
{
|
||||||
|
case (0xd7):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x00;
|
||||||
|
else KeyPressed = 0x07;
|
||||||
|
break;
|
||||||
|
case (0xee):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x01;
|
||||||
|
else KeyPressed = 'D';
|
||||||
|
break;
|
||||||
|
case (0xde):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x02;
|
||||||
|
else KeyPressed = 'C';
|
||||||
|
break;
|
||||||
|
case (0xbe):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x03;
|
||||||
|
else KeyPressed = 'B';
|
||||||
|
break;
|
||||||
|
case (0xed):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x04;
|
||||||
|
else KeyPressed = '#';
|
||||||
|
break;
|
||||||
|
case (0xdd):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x05;
|
||||||
|
else KeyPressed = 0x09;
|
||||||
|
break;
|
||||||
|
case (0xbd): KeyPressed = 0x06;
|
||||||
|
break;
|
||||||
|
case (0xeb):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x07;
|
||||||
|
else KeyPressed = 0x00;
|
||||||
|
break;
|
||||||
|
case (0xdb): KeyPressed = 0x08;
|
||||||
|
break;
|
||||||
|
case (0xbb):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 0x05;
|
||||||
|
KeyPressed = 0x09;
|
||||||
|
break;
|
||||||
|
case (0x7e): KeyPressed = 'A';
|
||||||
|
break;
|
||||||
|
case (0x7d):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 'B';
|
||||||
|
else KeyPressed = 0x03;
|
||||||
|
break;
|
||||||
|
case (0x7b):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 'C';
|
||||||
|
else KeyPressed = 0x02;
|
||||||
|
break;
|
||||||
|
case (0x77):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = 'D';
|
||||||
|
else KeyPressed = 0x01;
|
||||||
|
break;
|
||||||
|
case (0xe7): KeyPressed = '*';
|
||||||
|
break;
|
||||||
|
case (0xb7):
|
||||||
|
if(KEY_LAYOUT)KeyPressed = '#';
|
||||||
|
else KeyPressed = 0x04;
|
||||||
|
break;
|
||||||
|
default : KeyPressed = 'X';
|
||||||
|
}//end of switch
|
||||||
|
//lcd_gotoxy(0x0F, 0x00);
|
||||||
|
//lcd_putc(keyPressed);
|
||||||
|
OUT:;
|
||||||
|
}//end of if
|
||||||
|
}//end of for
|
||||||
|
}
|
||||||
|
/*void read_matrixKeypad(void)
|
||||||
|
{
|
||||||
|
//unsigned char upperNibble, keyCode, i, keyPressed;
|
||||||
|
unsigned char upperNibble, keyCode, i;
|
||||||
|
upperNibble = 0xff;
|
||||||
|
|
||||||
|
keyPressed = '@'; //clearing every time
|
||||||
|
|
||||||
|
for(i=0; i<4; i++)
|
||||||
|
{
|
||||||
|
_delay_ms(1);
|
||||||
|
KB_PORT_OUT = ~(0x01 << i);
|
||||||
|
_delay_ms(1); //delay for port o/p settling
|
||||||
|
upperNibble = KB_PORT_IN | 0x0f;
|
||||||
|
|
||||||
|
if (upperNibble != 0xff)
|
||||||
|
{
|
||||||
|
_delay_ms(20); //key debouncing delay
|
||||||
|
upperNibble = KB_PORT_IN | 0x0f;
|
||||||
|
if(upperNibble == 0xff) goto OUT;
|
||||||
|
keyCode = (upperNibble & 0xf0) | (0x0f & ~(0x01 << i));
|
||||||
|
while (upperNibble != 0xff)
|
||||||
|
upperNibble = KB_PORT_IN | 0x0f;
|
||||||
|
_delay_ms(20); //key debouncing delay
|
||||||
|
switch (keyCode) //generating key character to display on LCD
|
||||||
|
{
|
||||||
|
case (0xd7):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 0;
|
||||||
|
else keyPressed = 7;
|
||||||
|
break;
|
||||||
|
case (0xee):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 1;
|
||||||
|
else keyPressed = 'D';
|
||||||
|
break;
|
||||||
|
case (0xde):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 2;
|
||||||
|
else keyPressed = 'C';
|
||||||
|
break;
|
||||||
|
case (0xbe):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 3;
|
||||||
|
else keyPressed = 'B';
|
||||||
|
break;
|
||||||
|
case (0xed):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 4;
|
||||||
|
else keyPressed = '#';
|
||||||
|
break;
|
||||||
|
case (0xdd):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 5;
|
||||||
|
else keyPressed = 9;
|
||||||
|
break;
|
||||||
|
case (0xbd): keyPressed = 6;
|
||||||
|
break;
|
||||||
|
case (0xeb):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 7;
|
||||||
|
else keyPressed = 0;
|
||||||
|
break;
|
||||||
|
case (0xdb): keyPressed = 8;
|
||||||
|
break;
|
||||||
|
case (0xbb):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 5;
|
||||||
|
keyPressed = 9;
|
||||||
|
break;
|
||||||
|
case (0x7e): keyPressed = 'A';
|
||||||
|
break;
|
||||||
|
case (0x7d):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 'B';
|
||||||
|
else keyPressed = 3;
|
||||||
|
break;
|
||||||
|
case (0x7b):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 'C';
|
||||||
|
else keyPressed = 2;
|
||||||
|
break;
|
||||||
|
case (0x77):
|
||||||
|
if(KEY_LAYOUT)keyPressed = 'D';
|
||||||
|
else keyPressed = 1;
|
||||||
|
break;
|
||||||
|
case (0xe7): keyPressed = '*';
|
||||||
|
break;
|
||||||
|
case (0xb7):
|
||||||
|
if(KEY_LAYOUT)keyPressed = '#';
|
||||||
|
else keyPressed = 4;
|
||||||
|
break;
|
||||||
|
default : keyPressed = 'X';
|
||||||
|
}//end of switch
|
||||||
|
lcd_gotoxy(0x0F, 0x00);
|
||||||
|
lcd_putc(keyPressed);
|
||||||
|
OUT:;
|
||||||
|
}//end of if
|
||||||
|
}//end of for
|
||||||
|
} */
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* _4x4_key.h
|
||||||
|
*
|
||||||
|
* Created: 11-03-2015 15:29:39
|
||||||
|
* Author: stanly
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MATRIX_KEY_H_
|
||||||
|
#define MATRIX_KEY_H_
|
||||||
|
|
||||||
|
|
||||||
|
//#define KEY_LAYOUT 0 //straight
|
||||||
|
#define KEY_LAYOUT 1 //reverse
|
||||||
|
|
||||||
|
|
||||||
|
//extern unsigned char keyPressed, key_digit;
|
||||||
|
extern unsigned char key_value[2];
|
||||||
|
|
||||||
|
extern void init_matrixKeypad(void);
|
||||||
|
extern void read_matrixKeypad(void);
|
||||||
|
|
||||||
|
#endif /* MATRIX_KEY_H_ */
|
||||||
|
|
@ -0,0 +1,180 @@
|
||||||
|
C51 COMPILER V9.60.7.0 SER_DISP 07/10/2026 17:02:31 PAGE 1
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE SER_DISP
|
||||||
|
OBJECT MODULE PLACED IN ser_disp.OBJ
|
||||||
|
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ser_disp.c BROWSE DEBUG OBJECTEXTEND
|
||||||
|
|
||||||
|
line level source
|
||||||
|
|
||||||
|
1 //#pragma nointpromote
|
||||||
|
2 #include <REGX55.H>
|
||||||
|
3 //#include <SST89x5x4.H>
|
||||||
|
4 //#include <REGF51RC.H>
|
||||||
|
5
|
||||||
|
6 //#include <REG51.H>
|
||||||
|
7 #include <absacc.h>
|
||||||
|
8 #include <string.h>
|
||||||
|
9 #include <intrins.h>
|
||||||
|
10 #include <stdlib.h>
|
||||||
|
11
|
||||||
|
12 #include <ser_disp.h>
|
||||||
|
13 #include <utility.h>
|
||||||
|
14
|
||||||
|
15 sbit ser_clk =P2^6;
|
||||||
|
16 sbit ser_data=P2^7;
|
||||||
|
17
|
||||||
|
18 /* Display code storage.
|
||||||
|
19 Display Code.
|
||||||
|
20 0 to F 0x00 to 0x0F
|
||||||
|
21 - 0x10
|
||||||
|
22 Blank 0x11
|
||||||
|
23 P 0x12
|
||||||
|
24 R 0x13
|
||||||
|
25 T 0x14
|
||||||
|
26 H 0x15
|
||||||
|
27 L 0x16
|
||||||
|
28 O 0x17
|
||||||
|
29 N 0x18
|
||||||
|
30 G 0x19
|
||||||
|
31 M 0x1A
|
||||||
|
32 U 0x1B
|
||||||
|
33 Y 0x1C
|
||||||
|
34 W 0x1D
|
||||||
|
35 = 0x1E
|
||||||
|
36 */
|
||||||
|
37
|
||||||
|
38 unsigned char code h_7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
|
||||||
|
39 0x88,0x83,0xC6,0xA1,0x86,0x8E,
|
||||||
|
40 0xBF,0xFF,0x8C,0xAF,0x87,0x89,0xC7,
|
||||||
|
41 0xA3,0xAB,0xC2,0xAA,0xC1,0x91,0x95,0xF6};
|
||||||
|
42
|
||||||
|
43 unsigned char code filltronics[]={0x0F,0x01,0x16,0x16,0x14,0x13,0x17,0x18,0x01,0x0C,0x05,
|
||||||
|
44 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}; //Filltronics
|
||||||
|
45
|
||||||
|
46 extern unsigned char data disp_data[8];
|
||||||
|
47 extern unsigned char idata dp_val;
|
||||||
|
48 extern bit dp_flag;
|
||||||
|
49
|
||||||
|
50 //---------------------------------------------------------------------
|
||||||
|
51 void display(void)
|
||||||
|
52 {
|
||||||
|
53 1 unsigned char i,j,temp;
|
||||||
|
54 1 //EX0 = 0;
|
||||||
|
55 1 EA=0;
|
||||||
|
C51 COMPILER V9.60.7.0 SER_DISP 07/10/2026 17:02:31 PAGE 2
|
||||||
|
|
||||||
|
56 1 for(i=0;i<8;i++)
|
||||||
|
57 1 {
|
||||||
|
58 2 if(i == dp_val && dp_flag) temp=h_7[disp_data[i]] & 0x7F;
|
||||||
|
59 2 else temp=h_7[disp_data[i]];
|
||||||
|
60 2 for(j=0;j<=7;j++)
|
||||||
|
61 2 {
|
||||||
|
62 3 if(temp & 0x80) ser_data=1;
|
||||||
|
63 3 else ser_data=0;
|
||||||
|
64 3
|
||||||
|
65 3 ser_clk=1;
|
||||||
|
66 3 _nop_();
|
||||||
|
67 3 _nop_();
|
||||||
|
68 3 _nop_();
|
||||||
|
69 3 ser_clk=0;
|
||||||
|
70 3
|
||||||
|
71 3 temp<<=1;
|
||||||
|
72 3 _nop_();
|
||||||
|
73 3 _nop_();
|
||||||
|
74 3 _nop_();
|
||||||
|
75 3
|
||||||
|
76 3 rst_wdt();
|
||||||
|
77 3 }
|
||||||
|
78 2 }
|
||||||
|
79 1 //EX0 = 1;
|
||||||
|
80 1 EA=1;
|
||||||
|
81 1 }
|
||||||
|
82 //---------------------------------------------------------------------
|
||||||
|
83 void disp(char i1,i2,i3,i4,i5,i6,i7,i8)
|
||||||
|
84 {
|
||||||
|
85 1 disp_data[0]=i1;
|
||||||
|
86 1 disp_data[1]=i2;
|
||||||
|
87 1 disp_data[2]=i3;
|
||||||
|
88 1 disp_data[3]=i4;
|
||||||
|
89 1 disp_data[4]=i5;
|
||||||
|
90 1 disp_data[5]=i6;
|
||||||
|
91 1 disp_data[6]=i7;
|
||||||
|
92 1 disp_data[7]=i8;
|
||||||
|
93 1 display();
|
||||||
|
94 1 }
|
||||||
|
95 //------------------------------------------------------------------------
|
||||||
|
96 void clr_disp(void)
|
||||||
|
97 {
|
||||||
|
98 1 disp_data[0]=0x11;
|
||||||
|
99 1 disp_data[1]=0x11;
|
||||||
|
100 1 disp_data[2]=0x11;
|
||||||
|
101 1 disp_data[3]=0x11;
|
||||||
|
102 1 disp_data[4]=0x11;
|
||||||
|
103 1 disp_data[5]=0x11;
|
||||||
|
104 1 disp_data[6]=0x11;
|
||||||
|
105 1 disp_data[7]=0x11;
|
||||||
|
106 1 display();
|
||||||
|
107 1 }
|
||||||
|
108 //------------------------------------------------------------------------
|
||||||
|
109 void long2bcd(unsigned long value,char no)
|
||||||
|
110 {
|
||||||
|
111 1 char i; // Converts a bin value to bcd & display.
|
||||||
|
112 1 // char no determines how many digits to be
|
||||||
|
113 1 for(i=7;i>=(8-no);i--) // displayed.
|
||||||
|
114 1 {
|
||||||
|
115 2 disp_data[i]=value % 10;
|
||||||
|
116 2 if(value==0 && i<dp_val && disp_data[i]==0x00)disp_data[i]=0x11; //masking zero
|
||||||
|
117 2 value=value / 10;
|
||||||
|
C51 COMPILER V9.60.7.0 SER_DISP 07/10/2026 17:02:31 PAGE 3
|
||||||
|
|
||||||
|
118 2 rst_wdt();
|
||||||
|
119 2 }
|
||||||
|
120 1 if(disp_data[0]==0x11 && disp_data[1]==0x11){disp_data[0]=0x0C;disp_data[1]=0x1B;} //Display "CU"
|
||||||
|
121 1 display();
|
||||||
|
122 1 }
|
||||||
|
123 //----------------------------------------------------------------------------
|
||||||
|
124 void batch2bcd(unsigned int value,char no)
|
||||||
|
125 {
|
||||||
|
126 1 char i; // Converts a bin value to bcd & display.
|
||||||
|
127 1 // char no determines how many digits to be
|
||||||
|
128 1 for(i=7;i>=(8-no);i--) // displayed.
|
||||||
|
129 1 {
|
||||||
|
130 2 disp_data[i]=value % 10;
|
||||||
|
131 2 if(value==0 && i<7 && disp_data[i]==0x00)disp_data[i]=0x11; //masking zero
|
||||||
|
132 2 value=value / 10;
|
||||||
|
133 2 rst_wdt();
|
||||||
|
134 2 }
|
||||||
|
135 1 disp_data[0]=0x0B; //Display "Bat"
|
||||||
|
136 1 disp_data[1]=0x0A;
|
||||||
|
137 1 disp_data[2]=0x14;
|
||||||
|
138 1 display();
|
||||||
|
139 1 }
|
||||||
|
140 //-----------------------------------------------------------------------------
|
||||||
|
141 void display_name(void)
|
||||||
|
142 {
|
||||||
|
143 1 char i,j;
|
||||||
|
144 1 //for(i=0;i<22;i++)
|
||||||
|
145 1 for(i=0;i<sizeof(filltronics);i++)
|
||||||
|
146 1 {
|
||||||
|
147 2 disp_data[8]=filltronics[i];
|
||||||
|
148 2 delay(200);
|
||||||
|
149 2 for(j=0;j<8;j++)disp_data[j]=disp_data[j+1];
|
||||||
|
150 2 display();
|
||||||
|
151 2 }
|
||||||
|
152 1 }
|
||||||
|
153 //-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||||
|
CODE SIZE = 468 ----
|
||||||
|
CONSTANT SIZE = 50 ----
|
||||||
|
XDATA SIZE = ---- ----
|
||||||
|
PDATA SIZE = ---- ----
|
||||||
|
DATA SIZE = ---- 29
|
||||||
|
IDATA SIZE = ---- ----
|
||||||
|
BIT SIZE = ---- ----
|
||||||
|
END OF MODULE INFORMATION.
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,153 @@
|
||||||
|
//#pragma nointpromote
|
||||||
|
#include <REGX55.H>
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REGF51RC.H>
|
||||||
|
|
||||||
|
//#include <REG51.H>
|
||||||
|
#include <absacc.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <intrins.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <ser_disp.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
sbit ser_clk =P2^6;
|
||||||
|
sbit ser_data=P2^7;
|
||||||
|
|
||||||
|
/* Display code storage.
|
||||||
|
Display Code.
|
||||||
|
0 to F 0x00 to 0x0F
|
||||||
|
- 0x10
|
||||||
|
Blank 0x11
|
||||||
|
P 0x12
|
||||||
|
R 0x13
|
||||||
|
T 0x14
|
||||||
|
H 0x15
|
||||||
|
L 0x16
|
||||||
|
O 0x17
|
||||||
|
N 0x18
|
||||||
|
G 0x19
|
||||||
|
M 0x1A
|
||||||
|
U 0x1B
|
||||||
|
Y 0x1C
|
||||||
|
W 0x1D
|
||||||
|
= 0x1E
|
||||||
|
*/
|
||||||
|
|
||||||
|
unsigned char code h_7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
|
||||||
|
0x88,0x83,0xC6,0xA1,0x86,0x8E,
|
||||||
|
0xBF,0xFF,0x8C,0xAF,0x87,0x89,0xC7,
|
||||||
|
0xA3,0xAB,0xC2,0xAA,0xC1,0x91,0x95,0xF6};
|
||||||
|
|
||||||
|
unsigned char code filltronics[]={0x0F,0x01,0x16,0x16,0x14,0x13,0x17,0x18,0x01,0x0C,0x05,
|
||||||
|
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}; //Filltronics
|
||||||
|
|
||||||
|
extern unsigned char data disp_data[8];
|
||||||
|
extern unsigned char idata dp_val;
|
||||||
|
extern bit dp_flag;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
void display(void)
|
||||||
|
{
|
||||||
|
unsigned char i,j,temp;
|
||||||
|
//EX0 = 0;
|
||||||
|
EA=0;
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
if(i == dp_val && dp_flag) temp=h_7[disp_data[i]] & 0x7F;
|
||||||
|
else temp=h_7[disp_data[i]];
|
||||||
|
for(j=0;j<=7;j++)
|
||||||
|
{
|
||||||
|
if(temp & 0x80) ser_data=1;
|
||||||
|
else ser_data=0;
|
||||||
|
|
||||||
|
ser_clk=1;
|
||||||
|
_nop_();
|
||||||
|
_nop_();
|
||||||
|
_nop_();
|
||||||
|
ser_clk=0;
|
||||||
|
|
||||||
|
temp<<=1;
|
||||||
|
_nop_();
|
||||||
|
_nop_();
|
||||||
|
_nop_();
|
||||||
|
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//EX0 = 1;
|
||||||
|
EA=1;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
void disp(char i1,i2,i3,i4,i5,i6,i7,i8)
|
||||||
|
{
|
||||||
|
disp_data[0]=i1;
|
||||||
|
disp_data[1]=i2;
|
||||||
|
disp_data[2]=i3;
|
||||||
|
disp_data[3]=i4;
|
||||||
|
disp_data[4]=i5;
|
||||||
|
disp_data[5]=i6;
|
||||||
|
disp_data[6]=i7;
|
||||||
|
disp_data[7]=i8;
|
||||||
|
display();
|
||||||
|
}
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
void clr_disp(void)
|
||||||
|
{
|
||||||
|
disp_data[0]=0x11;
|
||||||
|
disp_data[1]=0x11;
|
||||||
|
disp_data[2]=0x11;
|
||||||
|
disp_data[3]=0x11;
|
||||||
|
disp_data[4]=0x11;
|
||||||
|
disp_data[5]=0x11;
|
||||||
|
disp_data[6]=0x11;
|
||||||
|
disp_data[7]=0x11;
|
||||||
|
display();
|
||||||
|
}
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
void long2bcd(unsigned long value,char no)
|
||||||
|
{
|
||||||
|
char i; // Converts a bin value to bcd & display.
|
||||||
|
// char no determines how many digits to be
|
||||||
|
for(i=7;i>=(8-no);i--) // displayed.
|
||||||
|
{
|
||||||
|
disp_data[i]=value % 10;
|
||||||
|
if(value==0 && i<dp_val && disp_data[i]==0x00)disp_data[i]=0x11; //masking zero
|
||||||
|
value=value / 10;
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
if(disp_data[0]==0x11 && disp_data[1]==0x11){disp_data[0]=0x0C;disp_data[1]=0x1B;} //Display "CU"
|
||||||
|
display();
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void batch2bcd(unsigned int value,char no)
|
||||||
|
{
|
||||||
|
char i; // Converts a bin value to bcd & display.
|
||||||
|
// char no determines how many digits to be
|
||||||
|
for(i=7;i>=(8-no);i--) // displayed.
|
||||||
|
{
|
||||||
|
disp_data[i]=value % 10;
|
||||||
|
if(value==0 && i<7 && disp_data[i]==0x00)disp_data[i]=0x11; //masking zero
|
||||||
|
value=value / 10;
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
disp_data[0]=0x0B; //Display "Bat"
|
||||||
|
disp_data[1]=0x0A;
|
||||||
|
disp_data[2]=0x14;
|
||||||
|
display();
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void display_name(void)
|
||||||
|
{
|
||||||
|
char i,j;
|
||||||
|
//for(i=0;i<22;i++)
|
||||||
|
for(i=0;i<sizeof(filltronics);i++)
|
||||||
|
{
|
||||||
|
disp_data[8]=filltronics[i];
|
||||||
|
delay(200);
|
||||||
|
for(j=0;j<8;j++)disp_data[j]=disp_data[j+1];
|
||||||
|
display();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
extern void display(void);
|
||||||
|
extern void disp(char i1,i2,i3,i4,i5,i6,i7,i8);
|
||||||
|
extern void clr_disp(void);
|
||||||
|
extern void long2bcd(unsigned long value,char no);
|
||||||
|
extern void batch2bcd(unsigned int value,char no);
|
||||||
|
extern void display_name(void);
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
C51 COMPILER V9.60.7.0 UTILITY 07/10/2026 17:02:31 PAGE 1
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE UTILITY
|
||||||
|
OBJECT MODULE PLACED IN utility.OBJ
|
||||||
|
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE utility.c BROWSE DEBUG OBJECTEXTEND
|
||||||
|
|
||||||
|
line level source
|
||||||
|
|
||||||
|
1 // Routines which are commonly used in all programs.
|
||||||
|
2
|
||||||
|
3 //#pragma code
|
||||||
|
4 #include <REGX55.H> /* Library header files */
|
||||||
|
5 //#include <SST89x5x4.H>
|
||||||
|
6 //#include <REG51.H>
|
||||||
|
7 #include <absacc.h>
|
||||||
|
8 #include <string.h>
|
||||||
|
9 #include <intrins.h>
|
||||||
|
10 #include <stdlib.h>
|
||||||
|
11
|
||||||
|
12 #include <utility.h>
|
||||||
|
13 //-----------------------------------------------------------------------------
|
||||||
|
14 extern int idata len;
|
||||||
|
15 //-----------------------------------------------------------------------------
|
||||||
|
16 sfr wdt =0xA6;
|
||||||
|
17 //------------------------------------------------------------------------
|
||||||
|
18 void delay(unsigned int del)
|
||||||
|
19 {
|
||||||
|
20 1 unsigned int j;
|
||||||
|
21 1 unsigned int i; // Delay of 'del' mS.
|
||||||
|
22 1 for(j=0;j<del;j++)
|
||||||
|
23 1 {
|
||||||
|
24 2 for(i=0;i<105;i++);
|
||||||
|
25 2 rst_wdt();
|
||||||
|
26 2 }
|
||||||
|
27 1 }
|
||||||
|
28 //-----------------------------------------------------------------------------
|
||||||
|
29 bit arr_cmp(char arr1[],char arr2[],int len)
|
||||||
|
30 {
|
||||||
|
31 1 bit b=1; // Compare two arrays and returns 1 if they are same.
|
||||||
|
32 1 unsigned char a;
|
||||||
|
33 1 for(a=0;a<len;a++)
|
||||||
|
34 1 {
|
||||||
|
35 2 if(arr1[a] != arr2[a]) b=0;
|
||||||
|
36 2 }
|
||||||
|
37 1 return(b);
|
||||||
|
38 1 }
|
||||||
|
39 //-----------------------------------------------------------------------------
|
||||||
|
40 void arr_cpy(char idata *dest,char idata *src,int len)
|
||||||
|
41 {
|
||||||
|
42 1 unsigned char a; // Copies src array to dest array.
|
||||||
|
43 1 for(a=0;a<len;a++)
|
||||||
|
44 1 {
|
||||||
|
45 2 *dest=*src;
|
||||||
|
46 2 dest++;src++;
|
||||||
|
47 2 }
|
||||||
|
48 1 }
|
||||||
|
49 //-----------------------------------------------------------------------------
|
||||||
|
50 void rst_wdt(void)
|
||||||
|
51 {
|
||||||
|
52 1 wdt=0x1e;
|
||||||
|
53 1 wdt=0xe1;
|
||||||
|
54 1 }
|
||||||
|
55 //-----------------------------------------------------------------------------
|
||||||
|
C51 COMPILER V9.60.7.0 UTILITY 07/10/2026 17:02:31 PAGE 2
|
||||||
|
|
||||||
|
56 unsigned char bcd2int(unsigned char bcd)
|
||||||
|
57 {
|
||||||
|
58 1 return 10 * (bcd >> 4) + (bcd & 0xF);
|
||||||
|
59 1 }
|
||||||
|
60 //------------------------------------------------------------------------------
|
||||||
|
61
|
||||||
|
|
||||||
|
|
||||||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||||
|
CODE SIZE = 162 ----
|
||||||
|
CONSTANT SIZE = ---- ----
|
||||||
|
XDATA SIZE = ---- ----
|
||||||
|
PDATA SIZE = ---- ----
|
||||||
|
DATA SIZE = ---- 12
|
||||||
|
IDATA SIZE = ---- ----
|
||||||
|
BIT SIZE = ---- 1
|
||||||
|
END OF MODULE INFORMATION.
|
||||||
|
|
||||||
|
|
||||||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,61 @@
|
||||||
|
// Routines which are commonly used in all programs.
|
||||||
|
|
||||||
|
//#pragma code
|
||||||
|
#include <REGX55.H> /* Library header files */
|
||||||
|
//#include <SST89x5x4.H>
|
||||||
|
//#include <REG51.H>
|
||||||
|
#include <absacc.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <intrins.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <utility.h>
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
extern int idata len;
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
sfr wdt =0xA6;
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
void delay(unsigned int del)
|
||||||
|
{
|
||||||
|
unsigned int j;
|
||||||
|
unsigned int i; // Delay of 'del' mS.
|
||||||
|
for(j=0;j<del;j++)
|
||||||
|
{
|
||||||
|
for(i=0;i<105;i++);
|
||||||
|
rst_wdt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
bit arr_cmp(char arr1[],char arr2[],int len)
|
||||||
|
{
|
||||||
|
bit b=1; // Compare two arrays and returns 1 if they are same.
|
||||||
|
unsigned char a;
|
||||||
|
for(a=0;a<len;a++)
|
||||||
|
{
|
||||||
|
if(arr1[a] != arr2[a]) b=0;
|
||||||
|
}
|
||||||
|
return(b);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void arr_cpy(char idata *dest,char idata *src,int len)
|
||||||
|
{
|
||||||
|
unsigned char a; // Copies src array to dest array.
|
||||||
|
for(a=0;a<len;a++)
|
||||||
|
{
|
||||||
|
*dest=*src;
|
||||||
|
dest++;src++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void rst_wdt(void)
|
||||||
|
{
|
||||||
|
wdt=0x1e;
|
||||||
|
wdt=0xe1;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
unsigned char bcd2int(unsigned char bcd)
|
||||||
|
{
|
||||||
|
return 10 * (bcd >> 4) + (bcd & 0xF);
|
||||||
|
}
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
#define nop(); _nop_(); _nop_(); _nop_();
|
||||||
|
void delay(unsigned int del);
|
||||||
|
extern bit arr_cmp(char arr1[],char arr2[],int len);
|
||||||
|
void arr_cpy(char idata *dest,char idata *src,int len);
|
||||||
|
void rst_wdt(void);
|
||||||
|
unsigned char bcd2int(unsigned char bcd);
|
||||||
Loading…
Reference in a new issue