我在电子市场买了个DS12C887定时芯片,有18个引脚,和书上提供的24脚不同,但查到相关资料有DS1287是18脚的
此芯片到底是哪个?有哪位大哥告诉我吗?
急
请问DS1287&DS12C887
全部回复(9)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
@hello_lzh
我做过这个片子的电路,程序也有,要得话联系我啊
你好啊,你可不可以把你的电路与程序发给我.
请你帮我看看我下面这个电路有没有问题.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/28/1113465210.gif');}" onmousewheel="return imgzoom(this);">
我用如下程序去读写RTC芯片,芯片好象没工作,测SQW端没有方波输出.
我的程序如下:
#include
#include
#define DSA PBYTE[0x0a]/*寄存器A*/
#define DSB PBYTE[0x0b]/*寄存器B*/
#define DSC PBYTE[0x0c]/*寄存器C*/
#define DSD PBYTE[0x0d]/*寄存器D*/
/*0,1,2,3,4,5,6,7,8,9,10*/
unsigned char code table[]={0x05,0xDD,0x46,0x54,0x9C,0x34,0x24,0x5D,0x04,0x14,0xff};
unsigned int new,old,temp,push;
unsigned int bdata rel;
unsigned char disbuffer[8]; /*显示缓冲区*/
unsigned char pdata *addr=0x00;/*RTC地址*/
void delayms(void)
{
unsigned char i;
for(i=200;i>0;i--){}
}
void display() /*显示与扫描按键函数*/
{
unsigned char *p=disbuffer;
unsigned char i;
unsigned char digit; /*位码*/
bit press=0; /*是否有按键标志*/
/*扫描是否有按键*/
P3=P3|0x07; /*读入P3口低3位前先向该3位写1*/
P1=0xff; /*数码管不显示*/
P2=0x00; /*送全扫描字*/
if(P3&0x07==0x07) /*判断是否有按键*/
press=1; /*有按键,则有按键标志置1*/
for(i=0,digit=0xfe;i<8;i++)/*显示,并扫描按键*/
{
delayms();
P1=table[*p++]; /*送段码*/
P2=digit; /*送位信号*/
digit=(digit<<1)|0x01;/*移位信号*/
if(press==1&&i<3)
{
new=(new<<4)|((~P3)&0x07);/*将扫描结果放入new低4位,并将前一行的扫描结果右移到new高4位*/
}
}
press=0;
if((temp=new^old)>0)
{
push=temp&new; /*新按下键值*/
rel=temp&old; /*释放键值*/
old=new;
}
}
main()
{
unsigned char i,n;
T1=0; /*关指示灯*/
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
DSA=0x25; /* 启动RTC,SQW方波输出频率2.048KHz*/
ACC=DSC; /* 读寄存器C,清中断请求标志 */
DSB=0x0E; /* 方波输出使能,时标格式二进制,24小时模式*/
/*向RTC中的RAM写数据*/
*(addr+15)=20;
*(addr+16)=61;
*(addr+17)=34;
*(addr+18)=27;
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
while(1)
{
/*取RTC中RAM的数据并送显示缓冲区*/
disbuffer[0]=i=*(addr+15)/10;
disbuffer[1]=*(addr+15)-i*10;
disbuffer[2]=i=*(addr+16)/10;
disbuffer[3]=*(addr+16)-i*10;
disbuffer[4]=i=*(addr+17)/10;
disbuffer[5]=*(addr+17)-i*10;
disbuffer[6]=i=*(addr+18)/10;
disbuffer[7]=*(addr+18)-i*10;
display(); /*显示*/
}
}
请你帮我看看我下面这个电路有没有问题.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/28/1113465210.gif');}" onmousewheel="return imgzoom(this);">
我用如下程序去读写RTC芯片,芯片好象没工作,测SQW端没有方波输出.
我的程序如下:
#include
#include
#define DSA PBYTE[0x0a]/*寄存器A*/
#define DSB PBYTE[0x0b]/*寄存器B*/
#define DSC PBYTE[0x0c]/*寄存器C*/
#define DSD PBYTE[0x0d]/*寄存器D*/
/*0,1,2,3,4,5,6,7,8,9,10*/
unsigned char code table[]={0x05,0xDD,0x46,0x54,0x9C,0x34,0x24,0x5D,0x04,0x14,0xff};
unsigned int new,old,temp,push;
unsigned int bdata rel;
unsigned char disbuffer[8]; /*显示缓冲区*/
unsigned char pdata *addr=0x00;/*RTC地址*/
void delayms(void)
{
unsigned char i;
for(i=200;i>0;i--){}
}
void display() /*显示与扫描按键函数*/
{
unsigned char *p=disbuffer;
unsigned char i;
unsigned char digit; /*位码*/
bit press=0; /*是否有按键标志*/
/*扫描是否有按键*/
P3=P3|0x07; /*读入P3口低3位前先向该3位写1*/
P1=0xff; /*数码管不显示*/
P2=0x00; /*送全扫描字*/
if(P3&0x07==0x07) /*判断是否有按键*/
press=1; /*有按键,则有按键标志置1*/
for(i=0,digit=0xfe;i<8;i++)/*显示,并扫描按键*/
{
delayms();
P1=table[*p++]; /*送段码*/
P2=digit; /*送位信号*/
digit=(digit<<1)|0x01;/*移位信号*/
if(press==1&&i<3)
{
new=(new<<4)|((~P3)&0x07);/*将扫描结果放入new低4位,并将前一行的扫描结果右移到new高4位*/
}
}
press=0;
if((temp=new^old)>0)
{
push=temp&new; /*新按下键值*/
rel=temp&old; /*释放键值*/
old=new;
}
}
main()
{
unsigned char i,n;
T1=0; /*关指示灯*/
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
DSA=0x25; /* 启动RTC,SQW方波输出频率2.048KHz*/
ACC=DSC; /* 读寄存器C,清中断请求标志 */
DSB=0x0E; /* 方波输出使能,时标格式二进制,24小时模式*/
/*向RTC中的RAM写数据*/
*(addr+15)=20;
*(addr+16)=61;
*(addr+17)=34;
*(addr+18)=27;
for(n=0;n<250;n++) /*延时*/
{
delayms();
}
while(1)
{
/*取RTC中RAM的数据并送显示缓冲区*/
disbuffer[0]=i=*(addr+15)/10;
disbuffer[1]=*(addr+15)-i*10;
disbuffer[2]=i=*(addr+16)/10;
disbuffer[3]=*(addr+16)-i*10;
disbuffer[4]=i=*(addr+17)/10;
disbuffer[5]=*(addr+17)-i*10;
disbuffer[6]=i=*(addr+18)/10;
disbuffer[7]=*(addr+18)-i*10;
display(); /*显示*/
}
}
0
回复
提示