找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3862|回复: 1
打印 上一主题 下一主题
收起左侧

89s52定时器怎么不行

[复制链接]
跳转到指定楼层
楼主
ID:34706 发表于 2012-2-24 22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我想用定时器定时数码管每隔1s显示0——9

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,s1;
uchar code s[10]={0xc0,0xf9,0xa4,0xb0,
     0x99,0x92,0x82,0xf8,
       0x80,0x90,};


void main(){
 TMOD=0x05;
 EA=1;
 ET0=1;
 TR0=1;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
  if(a==20){  
  a=0;
  P2=0xfe;
  for(s1=0;s1<10;s1++) {
   P0=s[s1];
  s1=s1++; 
  if(s1==10)
  s1=0;
}} } 

void dsq() interrupt 1{
  a=a++;  }
 
  
  

 

  

 

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:34963 发表于 2012-2-26 12:17 | 只看该作者

1.你的是使用定时器计数方式,最好是改成中断方式;

2.中断程序中应当重装初值;

3.判断是不是到了一秒的时间的程序最好也放到中断程序里;

4.主程序进行显示,建议用个while语句就行。

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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