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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求指導(dǎo)error C244: 'w_rtc_address': can't initialize, bad type or class..\libr...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1110735 發(fā)表于 2024-2-6 09:56 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
compiling ds1302.c.....\library\ds1302.c(5): warning C258: 'w_rtc_address': mspace on parameter ignored
..\library\ds1302.c(5): error C244: 'w_rtc_address': can't initialize, bad type or class..\library\ds1302.c - 1 Error(s), 1 Warning(s).


#include "ds1302.h"

//秒的起始位為0x80,一個單元一個8位的字節(jié),偶數(shù)為寫操作,奇數(shù)為讀操作
//不使用指針,編譯器會忽略mspace(用于內(nèi)存分配的自定義空間)
code unsigned char w_rtc_address[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分時日月周年
code unsigned char r_rtc_address[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};

unsigned int set[];
unsigned char rtc[];

unsigned long Now_Clock=0;    //輸入現(xiàn)在的時間--時分秒
unsigned int Now_week=0;        //周
unsigned long Now_Calendar=0;           //年月日

//寫入字節(jié)函數(shù)
void Write_Ds1302_Byte(unsigned  char temp)
{
    unsigned char i;
    for (i=0;i<8;i++)      
    {                  //寫入數(shù)據(jù)時,上升沿有效
        SCK=0;
        SDA=temp&0x01;
        temp>>=1;
        SCK=1;
    }
}   

//寫入地址字節(jié)與數(shù)據(jù)字節(jié)
void Write_Ds1302( unsigned char address,unsigned char dat )     
{
    RST=0;
    _nop_();       //延遲幾微秒
    SCK=0;
    _nop_();
    RST=1;  
    _nop_();  
    Write_Ds1302_Byte(address);
    Write_Ds1302_Byte(dat);     
    RST=0;
}

//先寫入地址字節(jié),再讀取數(shù)據(jù)
unsigned char Read_Ds1302 ( unsigned char address )
{
    unsigned char i,temp=0x00;
    RST=0;
    _nop_();
    SCK=0;
    _nop_();
    RST=1;
    _nop_();
    Write_Ds1302_Byte(address);
    for (i=0;i<8;i++)   
    {       //讀取數(shù)據(jù),下降沿讀取有效
        SCK=0;
        temp>>=1;   
        SCK=1;
        if(SDA)
            temp|=0x80;
    }
    RST=0;
    _nop_();
    RST=0;
    SCK=0;
    _nop_();
    SCK=1;
    _nop_();
    SDA=0;
    _nop_();
    SDA=1;
    _nop_();
    return (temp);         
}

//讀取時鐘信息
unsigned char* ReadRTC()
{
    unsigned char i, *p;
    unsigned char tmp[7];

    p = (unsigned char *)r_rtc_address;     //地址傳遞

    for(i=0;i<7;i++){
        tmp[i]=Read_Ds1302(*p);  //讀取秒、分、時三個寄存器數(shù)據(jù)
        p++;
    }

    rtc[0] = (tmp[2] >> 4);    //時的十位,temp[2]讀取的是85H的內(nèi)容
    rtc[1] = (tmp[2] & 0x0F);  //時的個位

    rtc[2] = (tmp[1] >> 4);     //分
    rtc[3] = (tmp[1] & 0x0F);

    rtc[4] = (tmp[0] >> 4);    //秒
    rtc[5] = (tmp[0] & 0x0F);

    rtc[6] = (tmp[5] >> 4);    //周
    rtc[7] = (tmp[5] & 0x0F);

    rtc[8] = (tmp[6] >> 4);    //年
    rtc[9] = (tmp[6] & 0x0F);

    rtc[10] = (tmp[4] >> 4);    //月
    rtc[11] = (tmp[4] & 0x0F);

    rtc[12] = (tmp[3] >> 4);    //日
    rtc[13] = (tmp[3] & 0x0F);

    return rtc;
}

//輸入的時間做處理
void set_clock()
{
    set[0] = Now_Clock/100000;  //時分秒
    set[1] = Now_Clock/10000%10;
    set[2] = Now_Clock/1000%10;
    set[3] = Now_Clock/100%10;
    set[4] = Now_Clock/10%10;
    set[5] = Now_Clock%10;

    set[6] = Now_week/10;      //周
    set[7] = Now_week%10;

    set[8] = Now_Calendar/100000;  //年月日
    set[9] = Now_Calendar/10000%10;
    set[10] = Now_Calendar/1000%10;
    set[11] = Now_Calendar/100%10;
    set[12] = Now_Calendar/10%10;
    set[13] = Now_Calendar%10;
}

//設(shè)置初始時鐘時間
void SetRTC()
{
    set_clock();
    Write_Ds1302(0x8E,0X00); //WP為0,打開寫保護(hù)關(guān)  
    Write_Ds1302(w_rtc_address[0], (set[4]<<4) | (set[5]));   //秒
    Write_Ds1302(w_rtc_address[1], (set[2]<<4) | (set[3]));  //分
    Write_Ds1302(w_rtc_address[2], (set[0]<<4) | (set[1])); //時

    Write_Ds1302(w_rtc_address[5], (set[6]<<4) | (set[7]));  //周

    Write_Ds1302(w_rtc_address[3], (set[12]<<4) | (set[13]));   //日
    Write_Ds1302(w_rtc_address[4], (set[10]<<4) | (set[11]));  //月
    Write_Ds1302(w_rtc_address[6], (set[8]<<4) | (set[9])); //年

    Write_Ds1302(0x8E,0x80);//WP為1,不能寫
}

unsigned char* select(unsigned char state1,unsigned char state2)
{
    unsigned char *p_rtc;
    p_rtc = ReadRTC();
    switch(state1)
    {
        case 1:
            switch(state2)
            {
                case 1:
                    p_rtc[4] = 0;
                    p_rtc[5] = 0;
                    break;
                case 2:
                    p_rtc[3]++;
                    if(p_rtc[3]>=10)
                    {
                        p_rtc[3]=0;
                        p_rtc[2]++;
                        if (p_rtc[2]>=6)
                        {
                            p_rtc[2] = 0;
                        }
                    }
                    break;
                case 3:
                    p_rtc[1]++;
                    if(p_rtc[1]>=10)
                    {
                        p_rtc[1]=0;
                        p_rtc[1]++;
                    }
                    if(p_rtc[1]>4&&p_rtc[0]>2)
                    {
                        p_rtc[0] = 0;
                        p_rtc[1] = 0;
                    }
                    break;
                default:break;
            }break;
        case 2:
            switch(state2)
            {
                case 1:
                    p_rtc[6] = 0;p_rtc[7]++;
                    if(p_rtc[7]>7) p_rtc[7] = 1;
                    break;
                default:break;
            }break;
        case 3:
            switch(state2)
            {
                case 1:
                    p_rtc[13]++;
                    if(p_rtc[13]>=10)
                    {
                        p_rtc[13]=0;
                        p_rtc[12]++;
                    }
                    if(p_rtc[13]>1&&p_rtc[12]>3&&
                    (p_rtc[10]==0&&(p_rtc[11]==1||p_rtc[11]==3||p_rtc[11]==5||p_rtc[11]==7||p_rtc[11]==8))
                    &&(p_rtc[10]==1&&p_rtc[11]==0||p_rtc[11]==2))                      //臘月
                    {
                        p_rtc[13] = 0;
                        p_rtc[12] = 0;
                    }
                    if(p_rtc[13]>0&&p_rtc[12]>3&&
                    (p_rtc[10]==0&&(p_rtc[11]==4||p_rtc[11]==6||p_rtc[11]==9))
                    &&(p_rtc[10]==1&&p_rtc[11]==1))
                    {
                        p_rtc[13] = 0;
                        p_rtc[12] = 0;
                    }
                    if(p_rtc[13]>8&&p_rtc[12]>2&&(p_rtc[10]==0&&p_rtc[11]==2))         //2月
                    {
                        p_rtc[13] = 0;
                        p_rtc[12] = 0;
                    }
                    break;
                case 2:
                    p_rtc[11]++;
                    if(p_rtc[11]>=10)
                    {
                        p_rtc[11]=0;
                        p_rtc[10]++;
                    }
                    if(p_rtc[11]>2&&p_rtc[10]>1)
                    {
                        p_rtc[11] = 0;
                        p_rtc[10] = 0;
                    }
                    break;
                case 3:
                    p_rtc[9]++;
                    if(p_rtc[9]>=10)
                    {
                        p_rtc[9]=0;
                        p_rtc[8]++;
                    }
                    if(p_rtc[9]>9&&p_rtc[0]>9)
                    {
                        p_rtc[9] = 0;
                        p_rtc[8] = 0;
                    }
                    break;
                default:break;
            }break;
        default:break;
    }
    return p_rtc;
}

void add_rtc(unsigned char state1,unsigned char state2)
{
    unsigned char *p_rtc;
    Write_Ds1302(0x8E,0X00); //WP為0,打開寫保護(hù)關(guān)  

    p_rtc = select(unsigned char state1,unsigned char state2);

    Write_Ds1302(w_rtc_address[0], (p_rtc[4]<<4) | (p_rtc[5]));   //秒
    Write_Ds1302(w_rtc_address[1], (p_rtc[2]<<4) | (p_rtc[3]));  //分
    Write_Ds1302(w_rtc_address[2], (p_rtc[0]<<4) | (p_rtc[1])); //時

    Write_Ds1302(w_rtc_address[5], (p_rtc[6]<<4) | (p_rtc[7]));  //周

    Write_Ds1302(w_rtc_address[3], (p_rtc[12]<<4) | (p_rtc[13]));   //日
    Write_Ds1302(w_rtc_address[4], (p_rtc[10]<<4) | (p_rtc[11]));  //月
    Write_Ds1302(w_rtc_address[6], (p_rtc[8]<<4) | (p_rtc[9])); //年

    Write_Ds1302(0x8E,0x80);//WP為1,不能寫
}


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

使用道具 舉報

板凳
ID:161164 發(fā)表于 2024-2-6 16:59 | 只看該作者
ds1302.h最后一行有問題
影響了C檔
回復(fù)

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2024-2-6 14:33 | 只看該作者
建議在壇子里先找個成熟的程序讀一遍再寫。
感覺有點玄幻高深的樣子不易讀,且程序不全也無法調(diào)試。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av在线播放一区二区 | 日韩欧美操 | 99re视频这里只有精品 | 国产日韩亚洲欧美 | 日本男人天堂 | www.4567| 视频国产一区 | 欧美一级黄色免费看 | 亚洲天堂av网 | 国产夜恋视频在线观看 | 91啪亚洲精品 | 国产精品成人一区 | 成人免费在线视频 | 精品国产不卡一区二区三区 | 日韩高清黄色 | 欧美精品首页 | 精精国产xxxx视频在线播放 | 成人免费看片网 | 久久成人av电影 | www.天天操.com| 欧美视频区 | 精品国产乱码久久久久久久久 | 2021狠狠干 | 视频一区二区三区四区五区 | 2018中文字幕第一页 | 免费久久网站 | 成年人在线观看 | 91网站视频在线观看 | 国产激情一区二区三区 | 国产美女福利在线观看 | 日韩在线欧美 | 99久久久无码国产精品 | 国产乱码精品1区2区3区 | 成人做爰69片免费观看 | 国产精品人人做人人爽 | 狠狠干2020| 亚洲日本中文字幕在线 | 91免费版在线观看 | 国产在线观看av | 成人精品高清 | 91欧美激情一区二区三区成人 |