找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2768|回复: 7
收起左侧

用单片机的T1进行时间控制鸟 菜鸟求大师教

[复制链接]
ID:158016 发表于 2016-12-27 13:31 | 显示全部楼层 |阅读模式
老师说要用T1进行时间控制  我不懂这句话的意思。 然后要按下P3.2引脚显示我的学号 按下P3.3引脚显示51 我会后面这个部分 但是前面那个要求我不知道怎么弄 谁可以教教我
IMG_0693.JPG IMG_0694.JPG
回复

使用道具 举报

ID:113208 发表于 2016-12-30 12:38 | 显示全部楼层
本帖最后由 张伟灵 于 2016-12-30 12:43 编辑

#include<reg52.h>
sbit P3_3=P3^3;
void Delay10ms()
  {   
    unsigned char i,j;
i=20;
j=113;
do
{ while(--j); }
    while(--i);
   }

void main()
{
  P3_3=0;    //GATE=1时,外触发INT0和INT1要高电平触发
                  //注意:实验板按键都是接地,自己接个按键接5V。
  TMOD=0x80;   //GATE=1,TR1和外中断INT1共同控制,模式13位
  IE=0x88;  //EA=1,ET1=1
  TH1=(8192-1000)/256;  //12MHZ,设1MS触发外中断
  TL1=(8192-1000)%256;  //你也可以设10MS以下,最好不要超过按键抖动时间
  TR1=1;    //启动TR1中断,等待INT1触发
  while(1)
  {   
    /*你之前的程序*/
        P2=0x33;}//我用P2试验LED灯00110011成功
  }

void time1() interrupt 3
{
   TR1=0;                           //影响按键判断的中断关了
   TH1=(8192-1000)/256;    //12MHZ,重新装初值1MS
   TL1=(8192-1000)%256;
     Delay10ms();//用实验板做才有效果,按键有抖动,不好仿真
     if(P3_3==1)
       {/*你要做的程序~~~ */
           P2=0xaa; //试验P2LED灯用10101010
           while(P3_3==1);}
     P2=0x0f;                   //试验P2LED灯用00001111
     TR1=1;   
  }  
回复

使用道具 举报

ID:113208 发表于 2016-12-29 15:37 来自手机 | 显示全部楼层
我今天忙,有时间我帮你写一下
回复

使用道具 举报

ID:65425 发表于 2016-12-29 15:22 | 显示全部楼层
xieyuanyuan 发表于 2016-12-27 18:35
我主要是不知道 是要把我写的那个程序 插到哪个地方?是插在 main 的后面吗?

主程序应该是时间那个,而你写的这两个只作为按按键时的中断程序!
回复

使用道具 举报

ID:7485 发表于 2016-12-28 21:49 | 显示全部楼层
主程序里面扫描按键,然后根据按键,执行相对应的程序即可。
回复

使用道具 举报

ID:158016 发表于 2016-12-27 18:35 | 显示全部楼层
向前看zk 发表于 2016-12-27 16:52
大致看了一下 ,你发的图片就一个延时程序和按键程序,T1时间控制那个没有。
而你说的T1做时间控制是24小 ...

我主要是不知道 是要把我写的那个程序 插到哪个地方?是插在 main 的后面吗?
回复

使用道具 举报

ID:158101 发表于 2016-12-27 17:19 | 显示全部楼层
heibiheibiheibni
回复

使用道具 举报

ID:65425 发表于 2016-12-27 16:52 | 显示全部楼层
大致看了一下 ,你发的图片就一个延时程序和按键程序,T1时间控制那个没有。
而你说的T1做时间控制是24小时秒分时这样正常周董的么,也就是你不按按键时时间正常走,只有你在按按键时显示你的学号和51字样,但不影响时间的正常走动,放开按键又回复时间走动的字样。
首先,你要设定T1做计数器/定时器,还得有中断程序,因为你要按键,就是要设定TCON,TMOD什么的,你在书上一看就知道了,如(TCON的八位: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0)。你参考一下下面这个小程序(他不能够直接用)和你的书本,相信你会明白的,希望思路对你有用!
#include<reg52.h>
sbit LED=P1^2;
void Init_Timer1(void)
{
TMOD |= 0x10;
TH1=0x00;
TL1=0x00;
EA=1;                  
ET1=1;                    
TR1=1;  
}
main()
{
Init_Timer1();
while(1);
}
void Timer1_isr(void) interrupt 3 using 1
{
TH1=0x00;
TL1=0x00;
LED=~LED;
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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