我想用拨码开关输入时间,按输入时间进行延时

2019-07-15 17:17发布

本帖最后由 yangjing6191519 于 2015-5-8 20:00 编辑

附图一张http://bbs.elecfans.com/jishu_481183_1_1.html原理图proteus
程序在此keil:http://bbs.elecfans.com/forum.ph ... ypeid%26typeid%3D93
void main(void)
{ UINT8 M,N,P;
  UINT16 hour,min,l;
  unsigned long m;
  M=P0;//拨码开关从P0口输入
  N=M&0xf0;//取P0口前四位作为定时时间的小时
  P=M&0x0f;//        取P0口后四位作为定时时间的分钟
                                
        switch(N)
                { case 0x00:hour=0;
                        case 0x10:hour=3600;//将小时化为秒
                        case 0x20:hour=7200;
                        case 0x30:hour=10800;
                        case 0x40:hour=14400;
                        case 0x50:hour=18000;
                        case 0x60:hour=21600;
                        case 0x70:hour=25200;
       }
                switch(P)
                { case 0x00:min=0;//降分钟化为秒
                        case 0x01:min=300;
                        case 0x02:min=600;
                        case 0x03:min=900;
                        case 0x04:min=1200;
                        case 0x05:min=1500;
                        case 0x06:min=1800;
                        case 0x07:min=2100;
                        case 0x08:min=2400;
                        case 0x09:min=2700;
                        case 0x0a:min=3000;
                        case 0x0b:min=3300;
       }

      m=hour+min;        //一共要掩饰的时间秒为单位        

                        delay1s(m);//延时设定的时间
                         led1=1;
                         led2=1;
                         led3=1;
                         led4=1;
                        
}

void delay1s(unsigned long MS)//延时1s的程序 {UINT8 h,i,j,k;
while(MS--)
{for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--); } }                 



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
yangjing6191519
1楼-- · 2019-07-17 05:39
Arvinhw 发表于 2015-5-7 15:32
delay1s(10)的时候整体都没有问题吗?是不是unsigned long MS数据结构定义的不合适?

这是完整程序,但是在PROTEUS中运行,结果总出错,不知道到底是哪里错了,实在是不知道怎么办了,
yangjing6191519
2楼-- · 2019-07-17 08:55
武力戡乱 发表于 2015-5-7 15:34
仿真!难道是proteus!

恩,有问题吗?下面有我的程序,完整的,功能就是拨码开关输入时间,按输入时间进行延迟,时间到达后步进机转动,乱码部分是文字说明,没有什么关系
yangjing6191519
3楼-- · 2019-07-17 10:23
武力戡乱 发表于 2015-5-7 15:34
仿真!难道是proteus!

恩,有问题吗?下面有我的程序,完整的,功能就是拨码开关输入时间,按输入时间进行延迟,时间到达后步进机转动,乱码部分是文字说明,没有什么关系
武力戡乱
4楼-- · 2019-07-17 14:03
yangjing6191519 发表于 2015-5-7 15:47
恩,有问题吗?下面有我的程序,完整的,功能就是拨码开关输入时间,按输入时间进行延迟,时间到达后步进机转动,乱码部分是文字说明,没有什么关系

我是proteus的版主!你把帖子发到了单片机板块,然后让我来看,考虑过我的感受吗?考虑过吗??考虑过吗???
呵呵。关键有时候看不到。
武力戡乱
5楼-- · 2019-07-17 14:03
 精彩回答 2  元偷偷看……
yangjing6191519
6楼-- · 2019-07-17 14:37
武力戡乱 发表于 2015-5-7 15:52
乱码可以改成国标。
这个程序咋回事呢?这个过程没看懂,是开机自检拨码开关吗?

你可以看问题中的程序,出于后来我写的程序主要部分,拨码开关还需要特定的程序进行说明吗?我只是用检测P0口的值来进行判定的,例如:UINT8 M,N,P;
M=P0;
  N=M&0xf0;
  P=M&0x0f;       
也就是直接对P0口进行处理(P0口外接拨码开关)

一周热门 更多>