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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2634|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黑人一级黄色大片 | 国产综合精品 | 黄视频国产 | 成人国产精品久久 | 国产三区视频在线观看 | 亚洲国产高清高潮精品美女 | 日本一区不卡 | 国产黄色大片在线免费观看 | 男人天堂视频在线观看 | 操人网 | jizz亚洲人| 国产在线精品区 | 成人欧美一区二区 | 在线观看中文字幕 | 干干天天 | 99九九视频 | 久在草| 亚洲国产精品久久久 | 国产9久| 久久9视频 | 视频羞羞 | 国产成人福利在线观看 | 91精品国产一区二区三区 | 欧美激情一区二区 | 亚洲成人高清 | 国产资源网 | av一区二区三区四区 | 热99| 婷婷久久精品一区二区 | 视频一区二区中文字幕日韩 | 成人区精品一区二区婷婷 | 日韩中文字幕av | 日韩国产专区 | 国产高清一区二区三区 | 欧美在线视频观看 | 日韩成人在线播放 | 国产精品一区一区三区 | 久久夜视频 | 久久精品免费 | 在线看无码的免费网站 | 羞羞视频网站免费观看 |