diff --git a/homework4/homework4.pdsprj b/homework4/homework4.pdsprj new file mode 100644 index 0000000..1c94be2 Binary files /dev/null and b/homework4/homework4.pdsprj differ diff --git a/homework4/src/homework4.h b/homework4/src/homework4.h new file mode 100644 index 0000000..8e701c5 --- /dev/null +++ b/homework4/src/homework4.h @@ -0,0 +1,22 @@ +// homework4.h + +/* + * this file defines the pin numbers for the LED and 38 transistors. + */ + +#include + +sbit ADDR0 = P1 ^ 0; +sbit ADDR1 = P1 ^ 1; +sbit ADDR2 = P1 ^ 2; +sbit ADDR3 = P1 ^ 3; +sbit ENLED = P1 ^ 4; + +sbit D1 = P2 ^ 7; +sbit D2 = P2 ^ 6; +sbit D3 = P2 ^ 5; +sbit D4 = P2 ^ 4; +sbit D5 = P2 ^ 3; +sbit D6 = P2 ^ 2; +sbit D7 = P2 ^ 1; +sbit D8 = P2 ^ 0; \ No newline at end of file diff --git a/homework4/src/test1.c b/homework4/src/test1.c new file mode 100644 index 0000000..8eb9065 --- /dev/null +++ b/homework4/src/test1.c @@ -0,0 +1,33 @@ +// test1.c +// 通过定时器实现以0.5Hz的频率闪烁一个小灯 + +#include "homework4.h" + +unsigned char cnt = 0; // log timer T0 overflow counts + +void main() +{ + ENLED = 0; + ADDR3 = 1; + ADDR2 = 1; + ADDR1 = 1; + ADDR0 = 0; + + TMOD = 0x01; // timer T0 mode 1, 16-bit timer + TH0 = 0XB8; + TL0 = 0X00; + TR0 = 1; // timer T0 run + + while (1) { + if (TF0 == 1) { // timer T0 overflow + TF0 = 0; // clear timer T0 overflow flag + TH0 = 0xB8; // reload timer T0 value + TL0 = 0x00; + cnt++; // log timer T0 overflow counts + if (cnt >= 50) { + cnt = 0; // clear log timer T0 overflow counts + D1 = ~D1; // toggle LED + } + } + } +} \ No newline at end of file