找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2214|回复: 8
打印 上一主题 下一主题
收起左侧

大佬帮我解释一下这个单片机程序,最好每一段都能详细解释一下

[复制链接]
跳转到指定楼层
楼主
ID:756707 发表于 2020-5-30 17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
400黑币
#include <stc12c5a60s2.h>

#define uchar unsigned char
#define uint unsigned int

#define LongToBin(n) (((n>>21)&0x80)|((n>>18)&0x40)|((n>>15)&0x20)|((n>>12)&0x10)|((n>>9)&0x08)|((n>>6)&0x04)|((n>>3)&0x02)|((n)&0x01))
#define BIN(n) LongToBin(0x##n##)

sbit anjian=P4^5;

sbit P0_0=P0^0;//层
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P4_6=P4^6;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;

sbit P3_0=P3^0;//竖
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P4_4=P4^4;

char moshi=1;
char h=0,v=0;
int t=0;
char zy=0,sj=0,jz=0;

bit ly_flag=0;                                                

void delay_1ms(uint q)//q shi xing can
{
        uint i,j;
        for(i=0;i<q;i++)
                for(j=0;j<110;j++);
}
void key()
{
        if(anjian==0)
        {
                delay_1ms(5);
                if(anjian==0)
                {
                        while(anjian==0);
                        jz++;
                        if(jz==2)jz=0;
                        if(jz==0){moshi=1;TR0=0;ET0=0;};
                        if(jz==1){moshi=0;ly_flag=1;TR0=1;ET0=1;}
                }        
        }
}
uchar STC_ADC()               
{                                                                                                
     uchar i;
     ADC_RES   = 0;
     ADC_RESL  = 0;
         ADC_CONTR = BIN(10001000);
         i=3;
     while(i--);                                            
     while (1)                     
     {
         if (ADC_CONTR & BIN(10000))   
              {
                             break;
                    }
     }
     ADC_CONTR = BIN(10000000);
           return( ADC_RESL<<2) ;
}
uchar date;
void init()
{
    TMOD= 0x01;                                   
    TL0 = (65536-50000)/256;      
    TH0 = (65536-50000)%256;      
    ET0 = 0;
    TR0 = 0;        
    EA = 1;
}
// PinPu  
void pp()
{
        if(date<=15 && date>0)
        {        
                h=1;
                if(v<h)
                {
                        v=h;        
                        P0=0X01;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;
                }
        }

        if(date<=30 && date>15)
        {        
                h=2;
                if(v<h)
                {
                        v=h;        
                        P0=0X03;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;               
                }
        }
        
        if(date<=45 && date>30)
        {
                h=3;
                if(v<h)
                {
                        v=h;
                        P0=0X07;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;
                }
        }
        if(date<=60 && date>45)
        {
                h=4;
                if(v<h)
                {
                        v=h;
                        P0=0X0F;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;
                }        
        }
        if(date<=75 && date>60)
        {
                h=5;
                if(v<h)
                {
                        v=h;        
                        P0=0X1F;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;
                }                        
        }
        if(date<=90 && date>75)
        {
                h=6;
                if(v<h)
                {
                        v=h;        
                        P0=0X3F;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;        
                }        
        }
        if(date<=105 && date>90)
        {
                h=7;
                if(v<h)
                {
                        v=h;        
                        P0=0X7F;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;
                }
        }
        if(date<=130 && date>105)
        {
                h=8;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;
                }
        }
        if(date<=145 && date>130)
        {
                h=9;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P4_6=1;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;               
                }        
        }
        if(date<=160 && date>145)
        {
                h=10;                 
                if(v<h)
                {
                        v=h;
                        P0=0XFF;P4_6=1;P1_1=1;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;                                                
                }               
        }
        if(date<=175 && date>160)
        {
                h=11;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P4_6=1;P1_1=1;P1_2=1;P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;               
                }
        }
        if(date<=190 && date>175)
        {
                h=12;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P4_6=1;P1_1=1;P1_2=1;P1_3=1;P1_7=0;P1_6=0;P1_5=0;P1_4=0;                        
                }               
        }
        if(date<=205 && date>190)
        {
                h=13;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P4_6=1;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_7=0;P1_6=0;P1_5=0;
                }                        
        }
        if(date<=220 && date>205)
        {
                h=14;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P4_6=1;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_5=1;P1_7=0;P1_6=0;               
                }        
        }
        if(date<=235 && date>220)
        {
                h=15;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P4_6=1;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_5=1;P1_6=1;P1_7=0;
                }                        
        }
        if(date>235)
        {
                h=16;
                if(v<h)
                {
                        v=h;        
                        P0=0XFF;P4_6=1;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_5=1;P1_6=1;P1_7=1;                        
                }                                
        }
}
// SheLing
void sl()
{
        P3_0=0;//J1
        P3_1=0;//J2
        P3_3=0;//J3
        P3_4=0;//J4
        P3_5=0;//J5
        P3_6=0;//J6
        P3_7=0;//J7
        P2_0=0;//J8
        P2_1=0;//J9
        P2_2=0;//J10
        P2_3=0;//J11
        P2_4=0;//J12
        P2_5=0;//J13
        P2_6=0;//J14
        P2_7=0;//J15
        P4_4=0;//J16
}

void main()
{
        P4SW =0Xff;

        P4M0=0xef;//  BIN(11111111)
        P4M1=0x00;        

        P1M0=0xff;
        P1M1=0x00;
         P1ASF =1;        
    AUXR1 =BIN(100);
        init();

        P0M0=0xff;
        P0M1=0x00;
        
        while(1)
        {
                if(moshi==1)dh1();
                //if(moshi==1)dh2();
        
                // pinpu donghua
                if(moshi==0)
                {
                        sl();
                        key();
                        date=STC_ADC();
                        pp();
                        delay_1ms(2);                        
                }
        }
}

void InitTimer0() interrupt 1
{
    TL0 = (65536-10000)/256;   
    TH0 = (65536-10000)%256;      
        t++;
        if(t==3)
        {
                t=0;
                if(v==0);
                else v--;

                if(v==16){P1_7=1;}        
                if(v==15){P1_7=0;}        
                if(v==14){P1_7=0;P1_6=0;}        
                if(v==13){P1_7=0;P1_6=0;P1_5=0;}
                if(v==12){P1_7=0;P1_6=0;P1_5=0;P1_4=0;}        
                if(v==11){P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;}        
                if(v==10){P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;}        
                if(v==9) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;}        
                if(v==8) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;}        
                if(v==7) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X7F;}//        
                if(v==6) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X3F;}//               
                if(v==5) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X1F;}//        
                if(v==4) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X0F;}//        
                if(v==3) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X07;}//
                if(v==2) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X03;}//               
                if(v==1) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X01;}//               
                if(v==0) {P1_7=0;P1_6=0;P1_5=0;P1_4=0;P1_3=0;P1_2=0;P1_1=0;P4_6=0;P0=0X00;}//               
        }                                
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-5-30 21:34 | 只看该作者
楼主在哪里找来这么糟糕透顶的程序,不会有人闲得无聊去研究。
回复

使用道具 举报

板凳
ID:756707 发表于 2020-5-31 10:56 | 只看该作者
wulin 发表于 2020-5-30 21:34
楼主在哪里找来这么糟糕透顶的程序,不会有人闲得无聊去研究。

某宝上面买的一个广州塔的程序,
回复

使用道具 举报

地板
ID:639106 发表于 2020-6-1 09:19 | 只看该作者
是用什么单片机的
回复

使用道具 举报

5#
ID:739545 发表于 2020-6-1 15:56 | 只看该作者
这代码看着蛋疼。初学者写的。不过虽然逻辑幼稚,但是行文还算规范
回复

使用道具 举报

6#
ID:776149 发表于 2020-6-11 22:15 | 只看该作者
你在那个宝上买还是问好有没有注释,这个费时间还麻烦
回复

使用道具 举报

7#
ID:436885 发表于 2020-6-12 01:16 | 只看该作者
按键+AD+比较处理
回复

使用道具 举报

8#
ID:744327 发表于 2020-6-12 08:51 | 只看该作者
按键控制流水灯程序。宏定义,位操作,按键检测,定时器使用
回复

使用道具 举报

9#
ID:745153 发表于 2020-6-12 09:51 | 只看该作者
控制流水灯的程序,看着有点头疼啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表