久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1654|回復: 0
打印 上一主題 下一主題
收起左側

單片機的PCA模塊實現電子時鐘程序 通過UART把時間發送出來

[復制鏈接]
跳轉到指定樓層
樓主
ID:451507 發表于 2018-12-21 14:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗六 PCA實驗
一、實驗目的
1. 了解單片機的PCA的工作原理。
2. 掌握單片機的PCA的應用。
二、實驗內容

//1. 用單片機的PCA模塊實現一個簡單的電子時鐘。要求通過UART把時間發送出來,每秒更新一次并換行,時間格式為:hh:mm:ss。
typedef unsigned char u8;
typedef unsigned int  u16;
typedef unsigned char uchar;
typedef unsigned int  uint;

#include <stc15.h>
#include <intrins.h>


#define FOSC (11059200)
#define TMS(t) (t*FOSC/12000)
#define THZ(hz) (FOSC/24/hz)
//void SmgInit();
void PcaInit();
void UartInit(void);    //19200bps@11.0592MHz
void UartSend( u8 dat );

// uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
// uchar wei=1;
u8 addr=0x00;
u8 rxdbuf[20];
u8 uart = 0;
u8 txd=0;
uint val0 = TMS(1000);
uint val1 = TMS(2);
uint val2 = THZ(100);

uchar s=55, m=59, h=23;
uint ms=0;
void main()
{
   
//  SmgInit();
  PcaInit();
  UartInit();    //19200bps@11.0592MHz
  UartSend(0x66);
    EA=1;
    while(1)
    {
        
        
    }
}

// void SmgInit()
// {
// P0M0 |= 0xF0;
// P0M1 &= 0x0F;
// P1M0 = 0xFF;
// P1M1 = 0x00;
// }

void PcaInit()
{
CMOD = 0x00;
CL = 0;
CH = 0;

CCAP0L = val0;
CCAP0H = val0>>8;
val0 = val0 + TMS(1000);
CCAPM0 = 0x49;

CCAP1L = val1;
CCAP1H = val1>>8;
val1 = val1 + TMS(2);
CCAPM1 = 0x49;

CCAP2L = val2;
CCAP2H = val2>>8;
val2 = val2 + THZ(100);
CCAPM2 = 0x4D;

CCON = 0x40;
}

void PcaSevr() interrupt 7
{
if( CCF0==1 )
{
     // UartSend(h%10+'0');
CCF0 = 0;
CCAP0L = val0;
CCAP0H = val0>>8;
val0 = val0 + TMS(1000);
   UartSend('h');
     UartSend('h');
   UartSend(':');
     UartSend(h/10%10);
     UartSend(h%10);

     UartSend('m');
     UartSend('m');
     UartSend(':');
     UartSend(m/10%10);
     UartSend(m%10);

     UartSend('s');
     UartSend('s');
     UartSend(':');
     UartSend(s/10%10);
   UartSend(s%10);
}

if( CCF1==1 )
{
CCF1 = 0;
CCAP1L = val1;
CCAP1H = val1>>8;
val1 = val1 + TMS(2);
ms++;
if( ms>=500 )
{
ms = 0;
s++;
if( s>=60 )
{
s = 0;
m++;
if( m>=60 )
{
m = 0;
h++;
if( h>=24 )
{
h = 0;
}
}
}
}

// switch( wei )
// {
// case 1:
// P07 = 1;
// P1 = tab[h/10%10];
// P04 = 0;
// wei = 2;
// break;
// case 2:
// P04 = 1;
// if( ms<10 )
// {
// P1 = tab[h%10] | 0x80;
// }
// else
// {
// P1 = tab[h%10];
// }
// P05 = 0;
// wei = 3;
// break;
// case 3:
// P05 = 1;
// P1 = tab[m/10%10];
// P06 = 0;
// wei = 4;
// break;
// case 4:
// P06 = 1;
// P1 = tab[m%10];
// P07 = 0;
// wei = 1;
// break;
// }



}

if( CCF2==1 )
{
CCF2 = 0;
CCAP2L = val2;
CCAP2H = val2>>8;
val2 = val2 + THZ(100);
}
}

///////////////////////////////////////////////////////////


void UartInit(void)    //19200bps@11.0592MHz
{
    SCON = 0x50;    //8位數據,可變波特率
    AUXR |= 0x01;    //串口1選擇定時器2為波特率發生器
    AUXR |= 0x04;    //定時器2時鐘為Fosc,即1T
    T2L = 0x70;        //設定定時初值
    T2H = 0xFF;        //設定定時初值
    ES = 1;         //打開串口1的中斷
    AUXR |= 0x10;    //啟動定時器2
}

void UartSend( u8 dat )
{
    while( txd==1 );
    SBUF = dat;
    txd = 1;
}

//串口自動下載命令:96 69 00 ff 02 fd 5a a5 ff
void Uart2Sevr() interrupt 4
{
    static u8 zt=0, bz=0;
    static u8 num=0, sum=0;
    u8 ch;
   
    if( RI )
    {
        RI = 0;
        ch = SBUF;
        switch( zt )
        {
            case 0://初始狀態
                if( ch==0x96 )
                {
                    zt = 1;
                }
            break;
            
            case 1://同步狀態
                if( ch==0x69 )
                {
                    zt = 2;
                }
                else
                {
                    zt = 0;
                }
            break;
            
            case 2://地址認證狀態
                if( bz==0 )
                {
                    if( ch==addr )
                    {
                        bz = 1;
                    }
                    else
                    {
                        zt = 0;
                    }
                }
                else
                {
                    if( ch==~addr )
                    {
                        zt = 3;
                    }
                    else
                    {
                        zt = 0;
                    }
                    bz = 0;
                }
            break;
            
            case 3://長度認證狀態
                if( bz==0 )
                {
                    rxdbuf[0] = ch;
                    bz = 1;
                }
                else
                {
                    if( ch==~rxdbuf[0] )
                    {
                        zt = 4;
                        num = 1;
                        sum = 0;
                    }
                    else
                    {
                        zt = 0;
                    }
                    bz = 0;
                }
            break;
            
            case 4://數據接收狀態
                rxdbuf[num++] = ch;
                sum = sum + ch;
                if( num>rxdbuf[0] )
                {
                    zt = 5;
                }
            break;
            
            case 5://數據累加和校驗狀態
                if( sum == ch )
                {
                    if( (rxdbuf[1]==0x5a)&&(rxdbuf[2]==0xa5) )
                    {
                        IAP_CONTR = 0x60;
                    }
                    uart = 1;
                }
                zt = 0;
            break;
        }
    }
   
    if( TI )
    {
        TI = 0;
        txd = 0;
    }
}

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 玖玖玖在线观看 | 日韩在线资源 | 二区三区视频 | 国产一区二区三区免费 | 一区二区三区不卡视频 | 在线观看视频h | 九九热九九| 亚洲男人天堂av | 亚洲综合视频一区 | 91久久| 国产成人精品高清久久 | 亚洲精品一区二区二区 | 青青久在线视频 | xx性欧美肥妇精品久久久久久 | 性色综合 | 亚洲综合一区二区三区 | 欧美成视频| av在线免费网 | 国产成人免费视频 | 成人特级毛片 | 在线综合视频 | 国产www在线 | 日本精品一区二区三区视频 | 一区二区国产精品 | 亚洲一区二区视频在线播放 | 欧美久久国产精品 | 日本成人三级电影 | 亚洲成人综合在线 | 精品一级| 亚洲成人免费电影 | 日韩一区二区三区在线 | av超碰| 欧美一区二区在线 | 中文字幕亚洲在线 | 日韩精品免费在线 | 丁香婷婷久久久综合精品国产 | 国产精品国产成人国产三级 | 欧美一级二级视频 | 中文字幕成人av | 中文字幕av一区 | 欧美成人自拍视频 |