archieve: homework7 header
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* name: homework7.h
|
||||||
|
* author: msksbr
|
||||||
|
* date: 2025/05/22
|
||||||
|
* description: a header file for homework7(a 51 MCU lesson homework)
|
||||||
|
* version: 1.0
|
||||||
|
* variables:
|
||||||
|
* 1.0:
|
||||||
|
* 1. pin numbers for BUS of leds, segs and matrix led
|
||||||
|
* 2. pin numbers for BUS of 74HC138
|
||||||
|
* functions:
|
||||||
|
* 1.0:
|
||||||
|
* 1. 74HC138 switcher
|
||||||
|
* 2. timer by ms based on timer0 with mode 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <REG52.H>
|
||||||
|
|
||||||
|
// variables:
|
||||||
|
// 1. pin numbers for BUS of leds, segs and matrix led
|
||||||
|
sbit DB0 = P0 ^ 0;
|
||||||
|
sbit DB1 = P0 ^ 1;
|
||||||
|
sbit DB2 = P0 ^ 2;
|
||||||
|
sbit DB3 = P0 ^ 3;
|
||||||
|
sbit DB4 = P0 ^ 4;
|
||||||
|
sbit DB5 = P0 ^ 5;
|
||||||
|
sbit DB6 = P0 ^ 6;
|
||||||
|
sbit DB7 = P0 ^ 7;
|
||||||
|
// 2. pin numbers for BUS of 74HC138
|
||||||
|
sbit ADDR0 = P1 ^ 0; // @param ADDR0: to A(A0) of 74HC138
|
||||||
|
sbit ADDR1 = P1 ^ 1; // @param ADDR1: to B(A1) of 74HC138
|
||||||
|
sbit ADDR2 = P1 ^ 2; // @param ADDR2: to C(A2) of 74HC138
|
||||||
|
|
||||||
|
sbit ADDR3 = P1 ^ 3; // @param ADDR3: to E1 of 74HC138
|
||||||
|
sbit ENLED = P1 ^ 4; // @param ENLED: to E2 & E3 of 74HC138
|
||||||
|
|
||||||
|
// functions:
|
||||||
|
// 1. 74HC138 switcher
|
||||||
|
void switch_38(unsigned char n)
|
||||||
|
{
|
||||||
|
// @subsection: turn n to 3 bits of binary number
|
||||||
|
bit A0 = n & 0x01;
|
||||||
|
bit A1 = (n >> 1) & 0x01;
|
||||||
|
bit A2 = (n >> 2) & 0x01;
|
||||||
|
// @subsection: turn on 74HC138
|
||||||
|
ENLED = 0;
|
||||||
|
ADDR3 = 1;
|
||||||
|
// @subsection: add 3 bits of binary number to 74HC138
|
||||||
|
ADDR0 = A0;
|
||||||
|
ADDR1 = A1;
|
||||||
|
ADDR2 = A2;
|
||||||
|
}
|
||||||
|
// 2. timer by ms based on timer0 with mode 1
|
||||||
|
void timer0_mode1(unsigned int ms)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
// @subsection: set timer0 to mode 1
|
||||||
|
TMOD = 0x01;
|
||||||
|
// @subsection: set timer0 to 11.0592MHz
|
||||||
|
TH0 = 0xFC;
|
||||||
|
TL0 = 0x67;
|
||||||
|
// @subsection: start timer0
|
||||||
|
TR0 = 1;
|
||||||
|
// @subsection: wait for timer0 to count ms times
|
||||||
|
for (i = 0; i < ms; i++) {
|
||||||
|
while (!TF0);
|
||||||
|
TF0 = 0;
|
||||||
|
TH0 = 0xFC;
|
||||||
|
TL0 = 0x67;
|
||||||
|
}
|
||||||
|
// @subsection: stop timer0
|
||||||
|
TR0 = 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user