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