久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2435|回復: 4
收起左側

單片機按鍵暫停程序,幾個地方卡住,求大佬指點!感激不盡

[復制鏈接]
ID:497954 發表于 2019-3-25 15:35 | 顯示全部樓層 |閱讀模式
如何實現按下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--);
}

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;
        }
               
}


void light1()
{
        if(count == 0)led1=0;
        if(count == 0)delay2(20);
        if(count == 0)led1 = ~led1;
}
//Ï′μó£¨μç»úÔË×a£©
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);
        
}

void light3()
{
        if(count == 0)led2 = ~led2;
        if(count == 0)delay2(20);
        if(count == 0)led2 = ~led2;

}
//ÆˉÏ′
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;

}
/*
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++;   
}
        
}
*/
//éá˸
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);
        }
        
}

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();
                                }
                        
                                
                }
         
        }  
}

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();        
        }
}

回復

使用道具 舉報

ID:466164 發表于 2019-3-25 22:33 | 顯示全部樓層
TR0=1
暫停就是TR0=0;不改變計數值,TR0=1繼續執行呵呵!不太懂。
回復

使用道具 舉報

ID:337069 發表于 2019-3-26 07:49 | 顯示全部樓層
本帖最后由 chtyise 于 2019-3-26 09:28 編輯

按一次key2以后一直在中斷里面執行
回復

使用道具 舉報

ID:497954 發表于 2019-4-1 15:06 | 顯示全部樓層
7358655 發表于 2019-3-25 22:33
TR0=1
暫停就是TR0=0;不改變計數值,TR0=1繼續執行呵呵!不太懂。

謝謝您,我試一試能不能實現。
回復

使用道具 舉報

ID:497954 發表于 2019-4-1 15:07 | 顯示全部樓層
chtyise 發表于 2019-3-26 07:49
按一次key2以后一直在中斷里面執行

這個好像不行,中斷程序不能太長,不然就會有很多問題,不過謝謝你啦
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本超碰 | 国产精品高清在线 | 久久久久国产一区二区三区 | 精品视频 免费 | 成人免费在线观看 | 国产激情视频网站 | 欧美性生活一区二区三区 | 中文字幕国产精品 | 一a一片一级一片啪啪 | 久久久亚洲成人 | 在线婷婷 | 九九精品在线 | 99精品久久99久久久久 | 欧美一区二区三区久久精品视 | 久久久久国产精品一区二区 | 欧美视频在线播放 | 99久久精品免费看国产小宝寻花 | 成人性视频在线 | 人人干人人看 | 99re6在线视频 | 日日夜夜精品视频 | 91免费福利在线 | 成人在线免费电影 | 欧美成人a∨高清免费观看 91伊人 | 久久久久91 | 久久久久国色av免费观看性色 | 中文字幕不卡 | 欧美中文字幕一区 | 国产成人免费视频网站视频社区 | 免费久久99精品国产婷婷六月 | 成人在线观看黄 | 国产精品揄拍一区二区 | 精品一区二区三区免费毛片 | 99精品国产一区二区青青牛奶 | 中文字幕一区二区三区四区五区 | www.精品国产 | 国产乱人伦精品一区二区 | 欧美性高潮 | 亚洲欧美日韩网站 | 国产真实精品久久二三区 | 欧美一区二区三区 |