archieve: homework7 header
This commit is contained in:
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* @name: homework7.h
|
||||||
|
* @author: msksbr
|
||||||
|
* @date: 2025-05-24
|
||||||
|
* @description: a header for homework7's homework tests
|
||||||
|
* @version: 1.0
|
||||||
|
* variables:
|
||||||
|
* 1.0:
|
||||||
|
* 1. sbit DB_0 ~ sbit DB_7: pin number for led matrix cathodes
|
||||||
|
* 2. pin number for 74HC138's address pins & enable pin
|
||||||
|
* 2.1. sbit ADDR0 ~ sbit ADDR2: pin number for 74HC138's address pins
|
||||||
|
* 2.2. sbit ADDR3 & sbit ENLED: pin number for 74HC138's enable pin
|
||||||
|
* functions:
|
||||||
|
* 1.0:
|
||||||
|
* 1. void switch_138(unsigned char n): switch the 74HC138's address to n
|
||||||
|
* 2. void delay_ms(unsigned char ms): a timer by ms base on timer0 mode 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <REG52.H>
|
||||||
|
|
||||||
|
// variables:
|
||||||
|
// 1. sbit DB_0 ~ sbit DB_7: pin number for led matrix cathodes
|
||||||
|
sbit DB_0 = P2 ^ 0;
|
||||||
|
sbit DB_1 = P2 ^ 1;
|
||||||
|
sbit DB_2 = P2 ^ 2;
|
||||||
|
sbit DB_3 = P2 ^ 3;
|
||||||
|
sbit DB_4 = P2 ^ 4;
|
||||||
|
sbit DB_5 = P2 ^ 5;
|
||||||
|
sbit DB_6 = P2 ^ 6;
|
||||||
|
sbit DB_7 = P2 ^ 7;
|
||||||
|
// 2. pin number for 74HC138's address pins & enable pin
|
||||||
|
// 2.1. sbit ADDR0 ~ sbit ADDR2: pin number for 74HC138's address pins
|
||||||
|
sbit ADDR0 = P1 ^ 0; // @var ADDR0: to A(A0)
|
||||||
|
sbit ADDR1 = P2 ^ 1; // @var ADDR1: to B(A1)
|
||||||
|
sbit ADDR2 = P2 ^ 2; // @var ADDR2: to C(A2)
|
||||||
|
// 2.2. sbit ADDR3 & sbit ENLED: pin number for 74HC138's enable pin
|
||||||
|
sbit ADDR3 = P2 ^ 3; // @var ADDR3: to E1
|
||||||
|
sbit ENLED = P2 ^ 4; // @var ENLED: to E2 & E3
|
||||||
|
|
||||||
|
// functions:
|
||||||
|
// 1. void switch_138(unsigned char n): switch the 74HC138's address to n
|
||||||
|
void switch_138(unsigned char n)
|
||||||
|
{
|
||||||
|
// @subsection: enable the 74HC138
|
||||||
|
ENLED = 0;
|
||||||
|
ADDR3 = 1;
|
||||||
|
// @subsection: turn n to 3 bit binary number
|
||||||
|
bit A0 = n & 0x01;
|
||||||
|
bit A1 = (n >> 1) & 0x01;
|
||||||
|
bit A2 = (n >> 2) & 0x01;
|
||||||
|
// @subsection: switch the 74HC138's address to n
|
||||||
|
ADDR0 = A0;
|
||||||
|
ADDR1 = A1;
|
||||||
|
ADDR2 = A2;
|
||||||
|
}
|
||||||
|
// 2. void delay_ms(unsigned char ms): a timer by ms base on timer0 mode 1
|
||||||
|
void delay_ms(unsigned char ms)
|
||||||
|
{
|
||||||
|
unsigned char i;
|
||||||
|
TMOD &= 0xF0;
|
||||||
|
TMOD |= 0x01;
|
||||||
|
for (i = 0; i < ms; i++) {
|
||||||
|
TH0 = 0xFC;
|
||||||
|
TL0 = 0x18;
|
||||||
|
TR0 = 1;
|
||||||
|
while (!TF0);
|
||||||
|
TR0 = 0;
|
||||||
|
TF0 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user