167 lines
3.4 KiB
C
167 lines
3.4 KiB
C
// homework4.h
|
|
/*
|
|
* this header file defines defines:
|
|
* the BUS pin numbers for the LEDs, 7SEGs, and 38 transistors.
|
|
* the type for the 38 transistor array.
|
|
*/
|
|
|
|
#include <REG52.H>
|
|
|
|
// variables:
|
|
// pin addresses for the 38 transistor
|
|
sbit ADDR0 = P1 ^ 0;
|
|
sbit ADDR1 = P1 ^ 1;
|
|
sbit ADDR2 = P1 ^ 2;
|
|
sbit ADDR3 = P1 ^ 3;
|
|
sbit ENLED = P1 ^ 4;
|
|
// BUS pin addresses for the LEDs and 7SEGs:
|
|
sbit BUS1A = P2 ^ 0;
|
|
sbit BUS2B = P2 ^ 1;
|
|
sbit BUS3C = P2 ^ 2;
|
|
sbit BUS4D = P2 ^ 3;
|
|
sbit BUS5E = P2 ^ 4;
|
|
sbit BUS6F = P2 ^ 5;
|
|
sbit BUS7G = P2 ^ 6;
|
|
sbit BUS8DP = P2 ^ 7;
|
|
|
|
// functions:
|
|
// 38 transistor type setters:
|
|
void set_38_2LED()
|
|
{
|
|
// e.g. set Y3 to 1, others to 0:
|
|
ADDR0 = 1;
|
|
ADDR1 = 1;
|
|
ADDR2 = 0;
|
|
ADDR3 = 1;
|
|
ENLED = 0;
|
|
}
|
|
void set_38_2SEG()
|
|
{
|
|
// e.g. set Y4 to 1, others to 0:
|
|
ADDR0 = 0;
|
|
ADDR1 = 0;
|
|
ADDR2 = 1;
|
|
ADDR3 = 1;
|
|
ENLED = 0;
|
|
}
|
|
|
|
// 7SEG number display function:
|
|
// 0-9
|
|
void show_number(unsigned char number)
|
|
{
|
|
switch (number) {
|
|
case 0: {
|
|
BUS1A = 0;
|
|
BUS2B = 0;
|
|
BUS3C = 0;
|
|
BUS4D = 0;
|
|
BUS5E = 0;
|
|
BUS6F = 0;
|
|
BUS7G = 1;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 1: {
|
|
BUS1A = 1;
|
|
BUS2B = 0;
|
|
BUS3C = 0;
|
|
BUS4D = 1;
|
|
BUS5E = 1;
|
|
BUS6F = 1;
|
|
BUS7G = 1;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 2: {
|
|
BUS1A = 0;
|
|
BUS2B = 0;
|
|
BUS3C = 1;
|
|
BUS4D = 0;
|
|
BUS5E = 0;
|
|
BUS6F = 1;
|
|
BUS7G = 0;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 3: {
|
|
BUS1A = 0;
|
|
BUS2B = 0;
|
|
BUS3C = 0;
|
|
BUS4D = 0;
|
|
BUS5E = 1;
|
|
BUS6F = 1;
|
|
BUS7G = 0;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 4: {
|
|
BUS1A = 1;
|
|
BUS2B = 0;
|
|
BUS3C = 0;
|
|
BUS4D = 1;
|
|
BUS5E = 1;
|
|
BUS6F = 0;
|
|
BUS7G = 0;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 5: {
|
|
BUS1A = 0;
|
|
BUS2B = 1;
|
|
BUS3C = 0;
|
|
BUS4D = 0;
|
|
BUS5E = 1;
|
|
BUS6F = 0;
|
|
BUS7G = 0;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 6: {
|
|
BUS1A = 0;
|
|
BUS2B = 1;
|
|
BUS3C = 0;
|
|
BUS4D = 0;
|
|
BUS5E = 0;
|
|
BUS6F = 0;
|
|
BUS7G = 0;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 7: {
|
|
BUS1A = 0;
|
|
BUS2B = 0;
|
|
BUS3C = 0;
|
|
BUS4D = 1;
|
|
BUS5E = 1;
|
|
BUS6F = 1;
|
|
BUS7G = 1;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 8: {
|
|
BUS1A = 0;
|
|
BUS2B = 0;
|
|
BUS3C = 0;
|
|
BUS4D = 0;
|
|
BUS5E = 0;
|
|
BUS6F = 0;
|
|
BUS7G = 0;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
case 9: {
|
|
BUS1A = 0;
|
|
BUS2B = 0;
|
|
BUS3C = 0;
|
|
BUS4D = 0;
|
|
BUS5E = 1;
|
|
BUS6F = 0;
|
|
BUS7G = 0;
|
|
BUS8DP = 1;
|
|
break;
|
|
}
|
|
default: {
|
|
break;
|
|
}
|
|
}
|
|
} |