| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 990 人关注过本帖
标题:单片机c51学习
只看楼主 加入收藏
lxl8781141
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-11-22
结帖率:0
收藏
 问题点数:0 回复次数:3 
单片机c51学习
我刚入手单片机,在研究c51的秒表设计,要有两个按键控制开始于暂停,两个按键分别在p1.0和p1.1两个端口,但是现在还没有头绪,请问高手教教我!谢啦
搜索更多相关主题的帖子: 单片机 学习 
2010-11-24 19:34
林浩
Rank: 2
等 级:论坛游民
帖 子:47
专家分:23
注 册:2011-1-12
收藏
得分:0 
就是要用  单片机中断系统,  定时/计数中断,  可以去 看看,

我这里也有 个时钟程序,可以轻松改成秒表,不懂的再问我
#include "REG52.h"
unsigned char SHUMA[4];
unsigned int  shizhong=0;
unsigned char mabiao[10]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char k=0;

 
void delay()
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++);
}

void  sjcf(void)
{
    SHUMA[0]=  shizhong/1000;
    SHUMA[1]=  (shizhong- SHUMA[0]*1000)/100;
        SHUMA[2]=  (shizhong- SHUMA[0]*1000- SHUMA[1]*100)/10;
        SHUMA[3]=  shizhong % 10;

}

void display(void)
{
    sjcf();
    P0=mabiao[SHUMA[0]]; //  2
    P1=0xfe;
    delay();
    P0=mabiao[SHUMA[1]]; //  0
    P1=0xfd;
    delay();
    P0=mabiao[SHUMA[2]];  // 1
    P1=0xfb;
    delay();
    P0=mabiao[SHUMA[3]];   //0
    P1=0xf7;
    delay();
}

void cpu_initial(void)
{
    EA=1;
    TMOD = 0x01;
    ET0=1;
    EX0=1;
    EX1=1;
    TR0=1;
    TH0=0x3c;
    TL0=0xb0;
}

void int0_int(void) interrupt 0
{
     TR0=0;
}

void timer0_int(void) interrupt 1
{
    k ++;
    TH0=0x3c;
    TL0=0xb0;
    if (k == 20)
    {
        k=0;
        shizhong++;
    }
}

void int1_int(void) interrupt 2
{
      TR0=1;

}

void main(void)
{
    cpu_initial();
    while(1)
    {
        display();
    }
}

这个是秒钟,你稍微改下TH0,TL0初值,就可以成秒表了

2011-01-12 19:11
zb475591816
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-1-11
收藏
得分:0 
我们下学期也要学习单片机了 。
2011-01-15 11:12
大江
Rank: 2
等 级:论坛游民
帖 子:29
专家分:27
注 册:2010-7-24
收藏
得分:0 
你的这是什么语言啊?
2011-03-08 17:31
快速回复:单片机c51学习
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021028 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved