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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+DS1302時鐘編程報錯

[復制鏈接]
跳轉到指定樓層
樓主
ID:717594 發表于 2020-4-26 23:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
參考普中單片機編寫的一個時鐘程序,
編譯的時候顯示ds1302文件報錯如下,搞了半天沒鬧明白,請問各位大神哪里出了問題。。。


ds1302.h文件
#ifndef _DS1302_H_
#define _DS1302_H_
#include "reg52.h"
#include "intrins.h"
#ifndef uint
#define uint unsigned int
#endif
#ifndef uchar
#define uchar unsighed uchar
#endif
sbit DSIO=P3^4;
sbit RST=P3^5;
sbit SCLK=P3^6;
void Ds1302Write(uchar addr,uchar dat);
uchar Ds1302Read(uchar addr);
void Ds1302Init();
void Ds1302ReadTime();
extern uchar TIME[7];   //??????
#endif

ds1302.c文件
#include "ds1302.h"
uchar TIME[7]=(0,0,0X12,0X07,0X05,0X06,0X16);  //????????16??????????5??7??
uchar code READ_RTC_ADDR[7]=(0X81;0X83,0X85,0X87,0X89,0X8b,0X8d);  //???????д????????1λ???1
uchar code WRITE_RTC_ADDR[7]=(0x90,0x82,0x84,0x86,0x88,0x8a,0x8c);
void Ds1302Write(uchar addr,uchar dat)
{
  uchar n;
  RST=0;
  _nop_();
  SCLK=0;
  _nop_();
  RST=1;
  _nop_();
  for(n=0;n<8;n++) //??????
  {
    DSIO=addr&0x01;
addr>>=1;
SCLK=1;   //????????????
_nop_();
SCLK=0;
_nop_();
}
  for(n=0;n<8;n++)    //????????
  {
    DSIO=dat&0x01;
dat>>=1;
SCLK=1;
_nop_();
SCLK=0;
_nop_();
   }
   RST=0;   //???????????
   _nop_();
  }
uchar Ds1302Read(uchar addr)
{
  uchar n, dat, dat1;
  RST=0;
  _nop_();
  SCLK=0;
  _nop_();
  RST=1;    //CE????
  _nop_();
  for(n=0;n<8;n++)
  {
   DSIO=addr&0x01;  //??????λ??????
   addr>>=1;
   SCLK=1;      // ????????????
   _nop_();
   SCLK=0;  //????????????
   _nop_();
  }
  _nop_();
  for(n=0;n<8;n++)
  {
    dat1=DSIO;
dat=(dat>>1)|(dat1<<7);  //dat?????λ??dat1?????λ
SCLK=1;      // ????????????
    _nop_();
    SCLK=0;  //????????????
    _nop_();
   }
   RST=0;
   _nop_();  //δDS1302??λ????????????????
   SCLK=1;
   _nop_();
   DSIO=0;
   _nop_();
   DSIO=1;
   _nop_();
   return dat;
}
void Ds1302Init()
{
  uchar n;
  Ds1302Write(0x8E,0x00);    //???д?????????д????????
  for(n=0;n<7;n++)
  {
    Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]); //д??7????????????
   }
   Ds1302Write(0x8E,0x80);  //??д????????

}
void Ds1302ReadTime()
{
  uchar n;
  for(n=0;n<7;n++)
  {
  TIME[n]=Ds1302Read(READ_RTC_ADDR[n]);
  }
}


主文件
#include "reg52.h"
#include "ds1302.h"
typedef unsigned int u16;
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 DisplayData[8];
void delay(u16 i)
{
   while(i--);
}
  
void datapros()
{
   Ds1302ReadTime();
   DisplayData[0]=smgduan[TIME[2]/16];   //??? ??????????????????
   DisplayData[1]=smgduan[TIME[2]&0X0f];
   DisplayData[2]=0x40;       //?????
   DisplayData[3]=smgduan[TIME[1]/16];   //??
   DisplayData[4]=smgduan[TIME[1]&0X0f];
   DisplayData[5]=0x40;
   DisplayData[6]=smgduan[TIME[0]/16];   //??
   DisplayData[7]=smgduan[TIME[0]&0x0f];
}
void DigDisplay()
{
  u8 i;
  for(i=0;i<8;i++)
  { switch(i)
  { case(0):
    LSA=0;LSB=0;LSC=0;break; //?????0λ,??????
case(1):
LSA=1;LSB=0;LSC=0;break;
case(2):
LSA=0;LSB=1;LSC=0;break;
case(3):
LSA=1;LSB=1;LSC=0;break;
case(4):
LSA=0;LSB=0;LSC=1;break;
case(5):
LSA=1;LSB=0;LSC=1;break;
    case(6):
LSA=1;LSB=1;LSC=0;break;
case(7):
LSA=1;LSB=1;LSC=1;break;
    }
P0=DisplayData[7-i];
delay(100);
P0=0x00;
  }
}
void main()
{
   Ds1302Init();
   while(1)
   {
    datapros();
DigDisplay();
}
}


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

使用道具 舉報

沙發
ID:658665 發表于 2020-4-27 00:31 | 只看該作者
今天太晚了,我沒有時間仔細看你的程序,如果你急用的話,先參考我的吧 DS1302模塊.rar (30.72 KB, 下載次數: 10)
回復

使用道具 舉報

板凳
ID:170318 發表于 2020-4-27 09:12 | 只看該作者
uchar code READ_RTC_ADDR[7]=(0X81;0X83,0X85,0X87,0X89,0X8b,0X8d);  括號中的0x81后面改成逗號
回復

使用道具 舉報

地板
ID:452950 發表于 2020-4-27 09:27 | 只看該作者
1.#define uchar unsighed char
2.#ifndef uint去掉
3#ifndef uchar去掉
4.#endif只留最后一個
5.引用函數最好加上extern
回復

使用道具 舉報

5#
ID:584814 發表于 2020-4-27 09:34 | 只看該作者
如果玩不好頭文件,直接在程序里定義uchar或寫全。
回復

使用道具 舉報

6#
ID:70069 發表于 2020-4-27 10:37 | 只看該作者
#ifndef uchar
#define uchar unsigned char
#endif
回復

使用道具 舉報

7#
ID:717594 發表于 2020-4-28 09:26 | 只看該作者
benclee 發表于 2020-4-27 10:37
#ifndef uchar
#define uchar unsigned char
#endif

發現了問題了,define里面把char 寫成了uchar, unsigned 寫成了unsighed
回復

使用道具 舉報

8#
ID:717594 發表于 2020-4-28 09:26 | 只看該作者
pengxxx 發表于 2020-4-27 00:31
今天太晚了,我沒有時間仔細看你的程序,如果你急用的話,先參考我的吧

非常感謝
回復

使用道具 舉報

9#
ID:717594 發表于 2020-4-28 09:27 | 只看該作者
jhczy 發表于 2020-4-27 09:12
uchar code READ_RTC_ADDR[7]=(0X81;0X83,0X85,0X87,0X89,0X8b,0X8d);  括號中的0x81后面改成逗號

這里確實有問題,謝謝
回復

使用道具 舉報

10#
ID:717594 發表于 2020-4-28 09:27 | 只看該作者
xxpp2011 發表于 2020-4-27 09:27
1.#define uchar unsighed char
2.#ifndef uint去掉
3#ifndef uchar去掉

非常感謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩国产一区二区三区 | 亚洲成年在线 | 国产在线视频网 | 久一久| 久久电影一区 | 黄色av网站在线免费观看 | 日韩综合色 | 97超级碰碰 | 国产一区二区三区久久 | 中文字幕在线一区二区三区 | 欧美另类视频 | 午夜视频免费在线观看 | 国产精品久久久久一区二区三区 | 亚洲成人国产精品 | 国产精品美女一区二区 | 亚州午夜精品 | 精品中文字幕一区二区三区 | 欧美精品一区在线 | 偷牌自拍 | 欧美 中文字幕 | www.青青草| 久久综合亚洲 | 99精品久久 | 成人在线中文字幕 | 狠狠干影院 | 激情视频网站 | 天天干亚洲 | aaaa网站 | 精品成人佐山爱一区二区 | 精品国产一区二区三区成人影院 | 99re66在线观看精品热 | 免费v片| 久久久青草婷婷精品综合日韩 | 国产一区二区麻豆 | 成人av免费在线观看 | 亚洲精品久久久蜜桃网站 | 成人在线中文 | 九九久视频 | 日韩在线 | 国色天香综合网 | 婷婷成人在线 |