找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

单片机课设,有几个地方卡住 了,麻烦大神指点一下!

[复制链接]
卓宇华 发表于 2019-3-25 15:44:43 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
实现按下k1,执行操作,按一下k2,暂停程序,在按一下k1恢复程序;长按k2,中止程序。
谢谢亲们,感激不尽

#include "reg52.h"   
#include "intrins.h"
typedef unsigned int u16;  
typedef unsigned char u8;
u16 scale;
u16 count = 0;
sbit k1=P3^2;  
sbit k2=P3^3;  
sbit led1=P2^0;  
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit pwm = P1^0;

/*timer0() interrupt 1   
{ static  u16   tt ;   
tt++;   
if(tt==10)   
{ tt=0;  
led5=0;  
}
if(scale==tt)  
led5=1;  

}
*/

//¶¶¶ˉÑóê±
void delay1(u16 i)
{
while(i--);
}
//¼ÆêyÑóê±
void delay2(u16 i)
{
        u8 a;
        for(a=0;a<i;a++)
        {
                TMOD = 0x00;
                TH0 = (65536-50000)/256;
                TL0 = (65536-50000)%256;
                TR0=1;
                while(!TF0);
                TF0=0;
        }
               
}


//×¢&#203;&#174;
void light1()
{
        if(count == 0)led1=0;
        if(count == 0)delay2(20);
        if(count == 0)led1 = ~led1;
}
//&#207;′μó£¨μ&#231;&#187;ú&#212;&#203;×a£&#169;
void light2()
{
        if(count == 0)led5 = ~led5;
        if(count == 0)led3 = ~led3;
        if(count == 0)delay2(20);
        if(count == 0)led3 = ~led3;
        if(count == 0)delay2(20);
        if(count == 0)led4 = ~led4;
        if(count == 0)delay2(20);
        if(count == 0)led4 = ~led4;
        if(count == 0)delay2(20);
        if(count == 0)led3 = ~led3;
        if(count == 0)delay2(20);
        if(count == 0)led3 = ~led3;
        if(count == 0)delay2(20);
        if(count == 0)led4 = ~led4;
        if(count == 0)delay2(20);
        if(count == 0)led4 = ~led4;
        if(count == 0)led5 = ~led5;
        if(count == 0)delay2(20);
       
}
//&#197;&#197;&#203;&#174;£¨μ&#231;&#187;úí£&#214;1£&#169;
void light3()
{
        if(count == 0)led2 = ~led2;
        if(count == 0)delay2(20);
        if(count == 0)led2 = ~led2;

}
//&#198;ˉ&#207;′
void light4()
{
        if(count == 0)led5 = ~led5;
        if(count == 0)led1 = ~led1;
        if(count == 0)led3 = ~led3;
        if(count == 0)delay2(20);
        if(count == 0)led3 = ~led3;
        if(count == 0)delay2(20);
        if(count == 0)led4 = ~led4;
        if(count == 0)delay2(20);
        if(count == 0)led4 = ~led4;
        if(count == 0)delay2(20);
        if(count == 0)led1 = ~led1;

}
/*
//&#203;|&#184;é
void light5()
{   
      
u16 n;     
TMOD=0x02;  
TH0=0x06;   
TL0=0x06;   
TR0=1;   
ET0=1;   
EA=1;     
while(1)
{for(n=0;n<5000;n++);  
scale++;   
}
       
}
*/
//éá&#203;&#184;
void light6()
{
        while(1)
        {
                if(count == 0)led1 = ~led1;
                if(count == 0)led2 = ~led2;
                if(count == 0)delay2(20);
                if(count == 0)led1 = ~led1;
                if(count == 0)led2 = ~led2;
                if(count == 0)delay2(20);
        }
       
}
//&#182;àᢰ′&#188;ü
void key1()
{
        if(k1==0)   
        {
                delay1(1000);   
                if(k1==0)  
                {
               
                        light1();
                        light2();
                        light3();
                        light4();
                        /*light5();*/
                        light6();
               
                }
                while(!k1);  
        }  
}
void key2()
{
        if(k2==0)   
        {
                TH0=(65536-60000)/256;
                TL0=(65536-60000)%256;  
                if(k2==0)  
                {   
                                count = 1;
                                while(1)
                                {
                                        key1();
                                }
                       
                               
                }
         
        }  
}
//°′&#188;ü&#214;D&#182;&#207;
stop()interrupt 1
{
        key2();
}


void main()
{
        led1 = 1;
        led2 = 1;
        led3 = 1;
        led4 = 1;
        led5 = 1;

        TMOD=0x01;
        TH0=(65536-60000)/256;
        TL0=(65536-60000)%256;
        TR0=1;
        EA=1;
        ET0=1;
        while(1)
        {
                key1();       
        }
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 10:19 , Processed in 0.059426 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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