找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5052|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

AT89C51與8253A計(jì)數(shù)器連接,不知問題出在哪?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:68539 發(fā)表于 2014-11-8 21:13 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
上面那個(gè)8253A的3個(gè)計(jì)數(shù)器全用,下面的那個(gè)8253只用計(jì)數(shù)器0。每個(gè)計(jì)數(shù)器的gate腳通過脈沖信號(hào)選中,就會(huì)對(duì)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)。仿真使用虛擬串口通信時(shí),串口助手得到的數(shù)據(jù)不變是怎么回事,這是做實(shí)驗(yàn)要用的一個(gè)電路,糾結(jié)老長時(shí)間了,實(shí)在不知道錯(cuò)在哪,編譯沒錯(cuò),求高手指導(dǎo)8253的使用或者給出以前做過的項(xiàng)目的例子,小弟在此謝過!程序如下:
#include<reg51.h>
#include<ctype.h>
#include<intrins.h>
#include<stdio.h>
#include<string.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int       
uint dat,dat1,data1,data2,data3,data4;
sbit P32=P3^2 ;

void Init_com()
{       
    TMOD=0x21;    //設(shè)定計(jì)數(shù)器1為模式2,定時(shí)器T0工作模式1
    SCON=0x50;
        PCON=0x80;        //波特率加倍
        TH1=0xE8;
        TL1=0xE8;   //設(shè)定波特率為4800,定時(shí)器T1自動(dòng)重新裝載定時(shí)初值
        TR1=1;       //啟動(dòng)計(jì)數(shù)器
        ES=0;
    TH0=47104/256;
    TL0=47104%256;
    EA=1;
    ET0=1;
    TR0=1;        //上面是定時(shí)器T0的初始化程序
}


void send(dat)
{

    SBUF=dat/256;
    while(!TI);
    TI=0; //RI 清零。
        SBUF=dat;
    while(!TI);
    TI=0; //RI 清零。
}



void main()
{
    P32=0;
    XBYTE[0x7FFF]=0x32;             //對(duì)計(jì)數(shù)器1寫入控制字并賦初值
    XBYTE[0x7FFC]=65535;
    XBYTE[0x7FFF]=0x72;             //對(duì)計(jì)數(shù)器2寫入控制字并賦初值
    XBYTE[0x7FFD]=65535;
    XBYTE[0x7FFF]=0xB2;             //對(duì)計(jì)數(shù)器3寫入控制字并賦初值
        XBYTE[0x7FFE]=65535;
    XBYTE[0xBFF7]=0x32;             //對(duì)計(jì)數(shù)器4寫入控制字并賦初值
    XBYTE[0xBFF3]=65535;
        P32=1;
    Init_com();              //串口初始化

    while(1)
    {}

}

void timer0() interrupt 1
{
     P32=0;                                      //輸出信號(hào)控制晶體管的開斷,實(shí)現(xiàn)對(duì)各計(jì)數(shù)器的復(fù)位      
     data1=65535-XBYTE[0x7FFC];
     data2=65535-XBYTE[0x7FFD];
     data3=65535-XBYTE[0x7FFE];
     data4=65535-XBYTE[0xBFF3];                        //XBYTE[0xAFF3]

     send(data1);                          //發(fā)送計(jì)數(shù)數(shù)據(jù)
         send(data2);
         send(data3);
         send(data4);
         TH0=55536/256;
     TL0= 55536%256;
     P32=1;                         //開通各計(jì)數(shù)器                          

}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表