找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3888|回復: 1
收起左側

89s52定時器怎么不行

[復制鏈接]
ID:34706 發(fā)表于 2012-2-24 22:33 | 顯示全部樓層 |閱讀模式

我想用定時器定時數(shù)碼管每隔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++;  }
 
  
  

 

  

 

回復

使用道具 舉報

ID:34963 發(fā)表于 2012-2-26 12:17 | 顯示全部樓層

1.你的是使用定時器計數(shù)方式,最好是改成中斷方式;

2.中斷程序中應當重裝初值;

3.判斷是不是到了一秒的時間的程序最好也放到中斷程序里;

4.主程序進行顯示,建議用個while語句就行。

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表