stc单片机1TMCU控制DS1302程序

发布者:BlissfulJourney最新更新时间:2013-05-11 来源: 21IC关键字:stc单片机  1TMCU  DS1302 手机看文章 扫描二维码
随时随地手机看文章
SCLK BIT P1.0                   ;DS1302时钟口P1.0
IO   BIT P1.1                   ;DS1302数据口P1.1

RST  BIT P1.2                   ;DS1302片选口P1.2 NOW  DATA 40H     ORG 0
    JMP Reset     ORG 100H
Reset:
    CALL DS1302_Initial     ;初始化DS1302
     MOV  DPTR,#INIT
    CALL DS1302_SetTime        ;设置初始时间
     MOV  R0,#NOW
    CALL DS1302_GetTime        ;读取当前时间     JMP $ INIT:  //秒 分  时  日  月 星期 年
    DB  00H,00H,20H,01H,01H,05H,10H
;**************************************
;延时X微秒(STC12C5A60S2@12M)
;不同的工作环境,需要调整此函数
;入口参数:R7
;出口参数:无
;**************************************
Delay:                      ;6 此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同
    NOP                     ;1
    NOP                     ;1
    RET                     ;4
;**************************************
;从DS1302读1字节数据
;入口参数:无
;出口参数:ACC
;**************************************
DS1302_ReadByte:
    CLR A
    PUSH 0
     MOV  0,#8                ;8位计数器
ReadNext:
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
     MOV  C,IO                ;读取数据
    RRC A                   ;保存数据
    SETB SCLK               ;时钟线拉高
    CALL Delay              ;延时等待
    DJNZ 0,ReadNext
    POP 0
    RET ;**************************************
;向DS1302写1字节数据
;入口参数:ACC
;出口参数:无
;**************************************
DS1302_WriteByte:
    PUSH 0
     MOV  0,#8                ;8位计数器
WriteNext:
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
    RRC A                   ;移出数据
     MOV  IO,C                ;送出到端口
    SETB SCLK               ;时钟线拉高
    CALL Delay              ;延时等待
    DJNZ 0,WriteNext
    POP 0
    RET ;**************************************
;读DS1302某地址的的数据
;入口参数:ACC (地址)
;出口参数:ACC (读出的数据)
;**************************************
DS1302_ReadData:
    CLR RST                 ;拉低片选
    CALL Delay              ;延时等待
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
    SETB RST                ;使能片选
    CALL Delay              ;延时等待
    CALL DS1302_WriteByte   ;写地址
    CALL DS1302_ReadByte    ;读数据
    RET ;**************************************
;往DS1302的某个地址写入数据
;入口参数:ACC (地址) B(需写入的数据)
;出口参数:无
;**************************************
DS1302_WritEDAta:
    CLR RST                 ;拉低片选
    CALL Delay              ;延时等待
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
    SETB RST                ;使能片选
    CALL Delay              ;延时等待
    CALL DS1302_WriteByte   ;写地址
     MOV  A,B                 ;地址数据送入ACC
    CALL DS1302_WriteByte   ;写数据
    RET ;**************************************
;写入初始时间
;入口参数:DPTR (初始值地址)
;出口参数:无
;**************************************
DS1302_SetTime:
     MOV  A,#8EH
     MOV  B,#0
    CALL DS1302_WriteData   ;允许写操作
     MOV  R7,#80H             ;从寄存器80开始
     MOV  R6,#7               ;连续写7次
SetNext:
    CLR A
     MOV C A,@A+DPTR
     MOV  B,A                 ;数据
     MOV  A,R7                ;地址
    CALL DS1302_WriteData   ;写数据
    INC R7
    INC R7                  ;寄存器地址+2
    INC DPTR                ;数据地址+1
    DJNZ R6,SetNext
     MOV  A,#8EH
     MOV  B,#80H
    CALL DS1302_WriteData   ;写保护
    RET ;**************************************
;读取当前时间
;入口参数:R0 (数据缓冲区首地址)
;出口参数:无
;**************************************
DS1302_GetTime:
     MOV  R7,#81H             ;从寄存器81开始
     MOV  R6,#7               ;连续读7次
GetNext:
     MOV  A,R7                ;地址
    CALL DS1302_ReadData    ;读数据
     MOV  @R0,A               ;保存数据
    INC R7
    INC R7                  ;寄存器地址+2
    INC R0                  ;数据地址+1
    DJNZ R6,GetNext
    RET ;**************************************
;初始化DS1302
;**************************************
DS1302_Initial:
    CLR RST
    CLR SCLK
     MOV  A,#8EH
     MOV  B,#0
    CALL DS1302_WriteData   ;允许写操作
     MOV  A,#80H
     MOV  B,#0
    CALL DS1302_WriteData   ;时钟启动
     MOV  A,#90H
     MOV  B,#0A6H
    CALL DS1302_WriteData   ;一个二极管+4K电阻充电
     MOV  A,#8EH
     MOV  B,#80H
    CALL DS1302_WriteData   ;写保护
    RET     END
关键字:stc单片机  1TMCU  DS1302 引用地址:stc单片机1TMCU控制DS1302程序

上一篇:STC单片机学习型遥控器程序
下一篇:STC12C5A60S2控制温度传感器DS18B20 c程序

推荐阅读最新更新时间:2024-03-16 13:24

51单片机学习:DS1302时钟实验
实验名称:DS1302时钟实验 接线说明: 实验现象:下载程序后,数码管上显示电子时钟时分秒,格式为“XX-XX-XX” 注意事项: ***************************************************************************************/ #include public.h #include smg.h #include ds1302.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 *
[单片机]
STC单片机常用型号
一:STC15W204S系列有8脚、16脚,具体应用参考STC15系列单片机手册。 二:STC15W401AS系列有SOP16、SOP20、SOP28,具体应用参考芯片手册。
[单片机]
<font color='red'>STC单片机</font>常用型号
STC单片机蓝牙程序+安卓APP与实物制作
制作出来的实物图如下: 单片机源程序如下: #include stc15.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define s1_s0 0x40 #define s1_s1 0x80 #define led P1 uchar receive_data; void UartInit (void) { ACC=P_SW1; ACC &=(s1_s0|s1_s1); ACC |=s1_s0; P_SW1=ACC; SCON=0x50; AUXR|=0x01; A
[单片机]
<font color='red'>STC单片机</font>蓝牙程序+安卓APP与实物制作
51单片机做的智能时钟具有闹钟功能(DS1302+DS18B20+LCD1602)
本贴针对学完单片机并且有读懂代码的非新手同学。本人目前放寒假,这个是本人在上个学期的单片机课上要求做的综合实验,现在重新修改了下增加了菜单目前测试毫无问题可以完美使用。有志向做闹钟的同学可以参考一下,原码上由本人写的大量注释可以方便看懂。 使用了LCD1602、DS1302、DS18B20用来测试温度、内部含闹钟系统但本人没有做EEPROM有需要的同学可以自行添加。 单片机源程序如下: #include reg52.h #include key.h #include LCD1602.h #include DS1302.h #include music.h #include DS18B20.H #define no
[单片机]
PIC18+DS1302程序设计
1、ds1302芯片使用相对简单,其采用spi三接口同步通信。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此可应用于测量系统中。ds1302内部读写寄存器存放的数据格式为bcd码,在读取后的数据转换时除以16得到相应10进制数。 2、部分核心程序: 发送地址及数据(向芯片里面写入数据): void write1302(unsigned char addr,unsigned dat){ RST=0;//不让数据传输进ds1302 SCLK=0;//初始化时钟总线 RST=1; for(int i=8;i 0;i--){ SCLK=0;
[单片机]
MSP430与DS1302之1602显示
#include msp430x14x.h typedef unsigned char uchar; typedef unsigned int uint; /**************宏定义***************/ #define DataDir P4DIR #define DataPort P4OUT #define Busy 0x80 #define CtrlDir P3DIR #define CLR_RS P3OUT&=~BIT0; //RS = P3.0 #define SET_RS P3OUT|=BIT0; #define CLR_RW P3OUT&=~BIT1; //RW = P3.1 #def
[单片机]
STC单片机输出可调的pwm
第一步:首先是要配置相关的PCA寄存器 比如我们配置CCP0引脚输出PWM。 // PCA0初始化 AUXR1 &= ~0x30; AUXR1 |= 0x10; //切换IO口, 0x00: P1.2 P1.1 P1.0 P3.7, 0x10: P3.4 P3.5 P3.6 P3.7, 0x20: P2.4 P2.5 P2.6 P2.7 CCAPM0 = 0x42; //工作模式 PWM PCA_PWM0 = (PCA_PWM0 & ~0xc0) | 0x00; //PWM宽度, 0x00: 8bit, 0x40: 7bit, 0x80: 6bit CMOD = (CMOD & ~0xe0) | 0x08
[单片机]
<font color='red'>STC单片机</font>输出可调的pwm
STC单片机做的电子表C51程序
电路很简单我就不画了,是stc系列的单片机做的,显示部分就是2个74hc573芯片连到P1口,然后用p3.0控制段选,按键的定义程序里有说明。很容易就能搭出来,下图是效果图,自己用万用板焊的,技术不行。到处都是飞线呵呵,请大家多多指教 程序的c51语言完整版本的下载地址: http://www.51hei.com/f/biaoc4.rar #include stc90.h #define uchar unsigned char #define uint unsigned int uchar d0,ss,gs,sf,gf,sm,gm; uchar e1,e2,e3,e4,e5,e6; uchar s1,q1; uchar
[单片机]
<font color='red'>STC单片机</font>做的电子表C51程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved