51单片机-定制器控制LED灯

发布时间 2023-07-19 15:21:42作者: 风中狂笑
#include "reg52.h"
#include "delay.h"
#include "intrins.h"
#include <stdio.h>
typedef unsigned int u16;
typedef unsigned char u8;
typedef unsigned int uint;
typedef unsigned char uchar;
#define LED_PORT P2
#define SMG_A_DP_PORT P0
#define SMG_PORT P0
sbit LSA = P2 ^ 2;
sbit LSB = P2 ^ 3;
sbit LSC = P2 ^ 4;
u8 gsmg_code[17] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
                    0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};

sbit LED1 = P2 ^ 0;
sbit LED2 = P2 ^ 1;
sbit LED3 = P2 ^ 2;
sbit LED4 = P2 ^ 3;
sbit LED5 = P2 ^ 4;
sbit LED6 = P2 ^ 5;
sbit LED7 = P2 ^ 6;
sbit LED8 = P2 ^ 7;
// sbit KEY1 = P3 ^ 1;
// sbit KEY2 = P3 ^ 0;
// sbit KEY3 = P3 ^ 2;
// sbit KEY4 = P3 ^ 3;

// #define KEY1_PRESS 1
// #define KEY2_PRESS 2
// #define KEY3_PRESS 3
// #define KEY4_PRESS 4
// #define KEY_NO_PRESS 0

// unsigned char key_scan(unsigned char mode)
// {
//     static unsigned char key = 1;
//     if (mode)
//     {
//         key = 1;
//     }
//     if (key == 1 && (KEY1 == 0 || KEY2 == 0 || KEY3 == 0 || KEY4 == 0))
//     {
//         delayms(10);
//         key = 0;
//         if (KEY1 == 0)
//         {
//             return KEY1_PRESS;
//         }
//         else if (KEY2 == 0)
//         {
//             return KEY2_PRESS;
//         }
//         else if (KEY3 == 0)
//         {
//             return KEY3_PRESS;
//         }
//         else if (KEY4 == 0)
//         {
//             return KEY4_PRESS;
//         }
//     }
//     else if (KEY1 == 1 && KEY2 == 1 && KEY3 == 1 && KEY4 == 1)
//     {
//         key = 1;
//     }
//     return KEY_NO_PRESS;
// }

// void main2()
// {
//     unsigned char key = 0;
//     while (1)
//     {
//         key = key_scan(0);
//         if (key == KEY1_PRESS)
//         {
//             LED1 = !LED1;
//         }
//     }
// }

void time0_init(void)
{
    TMOD |= 0x01;
    TH0 = 0xfc;
    TL0 = 0x18;
    ET0 = 1;
    EA = 1;
    TR0 = 1;
}

// void delay10us(u16 ten_us)
// {
//     while (ten_us--)
//     {
//         _nop_();
//         _nop_();
//         _nop_();
//         _nop_();
//         _nop_();
//         _nop_();
//     }
// }

void main()
{
    time0_init();
    while (1)
    {
    }
}

void time0() interrupt 1
{
    static u16 i = 0;
    TH0 = 0xfc;
    TL0 = 0x18;
    if (i == 0)
    {
        LED1 = 0;
        LED3 = 0;
        LED5 = 0;
        LED7 = 0;
    }
    i++;
    if (i == 2000)
    {
        i = 0;
        LED1 = !LED1;
        LED3 = !LED3;
        LED5 = !LED5;
        LED7 = !LED7;
        LED2 = !LED2;
        LED4 = !LED4;
        LED6 = !LED6;
        LED8 = !LED8;
    }
    else if (i == 1000)
    {
        LED1 = !LED1;
        LED3 = !LED3;
        LED5 = !LED5;
        LED7 = !LED7;
        LED2 = !LED2;
        LED4 = !LED4;
        LED6 = !LED6;
        LED8 = !LED8;
    }
}