#include "function.h"
void init_port(void);
void output_f(char);
void output_a(char);
void output_c(char);
char input_k(void);
char input_k_val(void);
volatile char x,i,j,y;
volatile long t_delay;
void init_port(void){
volatile char *init_port_f, *init_port_k, *init_port_a, *init_port_c;
init_port_f = 0x30; init_port_k = 0x107; init_port_a = 0x21; init_port_c = 0x27;
*init_port_f = 0xFF;*init_port_k = 0x00;*init_port_a = 0xFF;*init_port_c = 0xFF;
}
void output_f(char outdata_f){
volatile char *port_f_data = 0x31;
*port_f_data = outdata_f;
}
void output_a(char outdata_a){
volatile char *port_a_data = 0x22;
*port_a_data = outdata_a;
}
void output_c(char outdata_c){
volatile char *port_c_data = 0x28;
*port_c_data = outdata_c;
}
char input_k(){
volatile char *port_k_data = 0x106;
return *port_k_data;
}
char input_k_val(){
y = input_k();
while ((y & 0xFF) == 0x00){
y = input_k();
}
return y;
}
volatile char numbers[10] = {0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x3F};
volatile char number_dot[10] = {0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xBF};
void setup() {
init_port();
}
void loop() {
x = input_k();
output_a(number_dot[9]);
output_c(numbers[9]);
if((x & 0x01)== 0x01){
i = 0;
while(i <10){
output_a(number_dot[i]);
for(t_delay = 0; t_delay<100000;t_delay++);
j=0;
if(i < 9){
while(j < 10){
output_c(numbers[j]);
for(t_delay = 0; t_delay<100000;t_delay++);
j++;
}
}
i++;
}
output_a(0xFF);
output_c(0xFF);
}
else if((x & 0x02) == 0x02){
y = input_k_val();
for(t_delay = 0; t_delay<10000000;t_delay++);
if ((y & 0x01)==0x01){
output_f(0x01);
output_a(numbers[0]);
output_c(0x06);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
else if((y & 0x02)==0x02){
output_f(0x02);
output_a(numbers[9]);
output_c(numbers[1]);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
else if((y & 0x04)==0x04){
output_f(0x04);
output_a(numbers[9]);
output_c(numbers[2]);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
else if((y & 0x08)==0x08){
output_f(0x08);
output_a(numbers[9]);
output_c(numbers[3]);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
else if((y & 0x10)==0x10){
output_f(0x10);
output_a(numbers[9]);
output_c(numbers[4]);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
else if((y & 0x20)==0x20){
output_f(0x20);
output_a(numbers[9]);
output_c(numbers[5]);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
else if((y & 0x40)==0x40){
output_f(0x40);
output_a(numbers[9]);
output_c(numbers[6]);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
else if((y & 0x80)==0x80){
output_f(0x80);
output_a(numbers[9]);
output_c(numbers[7]);
for(t_delay = 0; t_delay<1000000;t_delay++);
}
}
}