单片机MSP430F149-DS1302读写及串口收发程序

合集下载

DS1302原理及程序说明

DS1302原理及程序说明

DS1302原理及程序说明DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM ,通过简单的串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。

DS1302 与单片机之间能简单地采用同步串行的方式进行,DS1302的引脚命名如图1-1所示。

通信仅需用到三根信号线:(1)CE 片选,(2)I/O 数据线,(3)SCLK 串行时钟,DS1302与CPU 的连接如图1-2所示。

时钟/RAM 的读/写数据以一个字节或多字节的字符组方式通信,DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW 。

DS1302具有双电源管脚,用于主电源和备份电源供应Vcc1,为可编程涓流充电电源附加七个字节存储器,它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。

DS1302主要的性能指标如下:实时时钟具有能计算2100 年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力31× 8 位暂存数据存储RAM 串行I/O 口方式,使得管脚数量最少宽范围工作电压2.0~ 5.5V工作电流2.0V 时,小于300nA读/写时钟或RAM 数据时有两种传送方式:单字节传送和多字节传送字符组方式8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配简单3 线接口与TTL 兼容Vcc=5V 。

DS1302的读写模式工作时序如图1-3和图1-4所示。

图1-3 单字节读模式图1-4 单字节写模式注:在多字节模式下,SCLK 发出同步脉冲,CS 须持续保持高电平直到多字节操作结束,图1-1 DS1302引脚图1-2 DS1302与CPU 接口DS1302内部寄存器的地址定义如表1-1所示。

表1-1 寄存器的地址及定义实验说明1. DS1302与51单片机的连接IO ——P2.7:串行数据输入/输出引脚SCLK ——P2.6:串行时钟引脚CE ——P2.4:片选CE2. LCD 与单片机连接;************************************************************************* ; LCD Module LMB1602 与单片机连接:;************************************************************************* ; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ;Vss Vdd V o RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK ; 0V +5V 0V P32 P33 P34 ---------------- P1[0..7] ---------------- +5V 0V;*************************************************************************3. LCD 显示功能说明LCD1602显示格式如图1-5所示。

MSP430F149的串口RS232接口

MSP430F149的串口RS232接口

MSP430F149的串口RS232接口1、概述具有同步串口模式(SPI),异步通信模式(UART)。

作异步通信时,P3.4,P3.5,P3.6,P3.7第二功能分别是UTXD0, URXD0, UTXD1, UTXD2 2、使用方法概述2.1 程序架构配置寄存器设置工作模式{设置IO口为第二功能作为串口收发引脚;使能串口收发功能;选择每帧数据位为7或8;选择波特率发生器时钟源;配置波特率(查表得出值再配置UxBR0, UxBR1,UxMCTL);软件清除串口复位位(SWRST);若采用中断方式则使能接受、发送中断}编写接受/发送程序,可采用查询方式或中断方式。

同51单片机不同的是,UTXIFG,URXIF 在发送下一个数据和读取数据时被自动清零了,无需软件清除。

2.2 细节描述配置波特率时用户手册上有速查表,如下设置波特率时要选择合适的时钟源。

对于较低的波特率(9600b/s及以下),可选ACLK,大于9600要选用SMCLK,因为串口波特率发生器分频系数要求大于3。

UxBR0(低)UxBR1(高)值的计算式为:选择的时钟源/波特率,再取整。

为了精确,MSP430设置了小数分频功能,通过UxMCTL来完成。

3、相关寄存器1.ME1, Module Enable Register 1UTXE0 Bit 7 USART0 transmit enable. This bit enables the transmitter for USART0.0 Module not enabled1 Module enabledURXE0 Bit 6 USART0 receive enable. This bit enables the receiver for USART0.0 Module not enabled1 Module enabled2.UxCTL(UCTLx), USART Control RegisterCHAR Bit 4 Character length. Selects 7-bit or 8-bit character length.0 7-bit data1 8-bit dataSWRST Bit 0 Software reset enable0 Disabled. USART reset released for operation1 Enabled. USART logic held in reset state3.UxTCTL(UTCTLx), USART Transmit Control RegisterSSELx Bits5-4Source select. These bits select the BRCLK source clock.00 UCLKI01 ACLK10 SMCLK11 SMCLK4.UxBR0, USART Baud Rate Control Register 0,低8位UxBR1, USART Baud Rate Control Register 1,高8位5. UxMCTL, USART Modulation Control RegisterUxMCTLx Bits7−0Modulation bits. These bits select the modulation for BRCLK.6.IFG1, Interrupt Flag Register 1UTXIFG0 Bit 7 USART0 transmit interrupt flag. UTXIFG0 is set when U0TXBUF is empty.0 No interrupt pending1 Interrupt pendingURXIFG0 Bit 6 USART0 receive interrupt flag. URXIFG0 is set when U0RXBUF has receiveda complete character.0 No interrupt pending1 Interrupt pending7.IE1, Interrupt Enable Register 1UTXIE0 Bit 7 USART0 transmit interrupt enable. This bit enables the UTXIFG0 interrupt.0 Interrupt not enabled1 Interrupt enabledURXIE0 Bit 6 USART0 receive interrupt enable. This bit enables the URXIFG0 interrupt.0 Interrupt not enabled1 Interrupt enabled4、实例4.1 配置为N.8.1,9600,查询方式收发数据/*******************************************函数名称:InitUART功能:初始化UART端口参数:无返回值:无********************************************/void InitUART(void){P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXDME1 |= URXE0 + UTXE0; // Enable USART0 T/RXDUCTL0 |= CHAR; // 8-bit characterUTCTL0 |= SSEL0; // UCLK = ACLKUBR00 = 0x03; // 32k/9600 - 3.41UBR10 = 0x00; //UMCTL0 = 0x4A; // ModulationUCTL0 &= ~SWRST; // Initialize USART state machine }收数据if(IFG1 & URXIFG0) Disp1Char(U0RXBUF); //如果收到字符发数据while (!(IFG1 & UTXIFG0)); TXBUF0 =Char;4.2 配置接收数据中断方式P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受UCTL0 |= CHAR; // 选择8位字符UTCTL0 |= SSEL0; // UCLK = ACLKUBR00 = 0x03; // 波特率9600UBR10 = 0x00; //UMCTL0 = 0x4A; // ModulationUCTL0 &= ~SWRST; // 初始化UART状态机IE1 |= URXIE0; // 使能USART0的接收中断_EINT();中断服务函数#pragma vector = UART0RX_VECTOR __interrupt void UART0_RXISR(void) { }。

ds1302与单片机的连接,51单片机操作ds1302流程展示

ds1302与单片机的连接,51单片机操作ds1302流程展示

ds1302 与单片机的连接,51 单片机操作ds1302 流程
展示
在许多单片机系统中常需要一些与时间有关的控制这就有需要使用实时时钟,因为在测控系统中需要做一些特殊数据的记录及其出现时间的记
录。

那幺实时时钟就能够很好的解决这个问题,今天我们就来谈谈ds1302 与单片机之间是如何作用联系的,单片机又是如何对时钟芯片进行操作的,一
起来了解一下。

51 单片机操作ds1302 流程展示
DS1302 通过3 根线与MCU 连接串行数据发送,接收时钟信号由MCU 发送,可外接备用电池以便主电源断电后不丢失数据,并可编程对备用电源充电。

DS1302 的结构如下:。

DS1302基本读写

DS1302基本读写
/*void Timer0_init( void )
{
TMOD |= 0x01; Fra bibliotek/设置定时器0的模式为16位
TH0 = ( 65536-46000 ) / 256;
TL0 = (65536-46000) % 256;
if( EA != 1 )
EA = 1;
ET0 = 1; //打开定时器0的中断
/*****************************************************************
*********** Name: DS1302
***********Date: 2014/12/25
***********Com: FairSun
*********** LOL
/*void Timer0_server( void ) interrupt 1
{
TH0 = (65536-46000) / 256;
TL0 = (65536-46000) % 256;
} */
/************************************************************************
const unsigned char smg_dp_yin[ 16 ] = {0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef,
0xf7, 0xfc, 0xb9, 0xde, 0xfb, 0xf1};//0. 1. 2. 3......f.
unsigned char month;
unsigned char date; //一月的几日
};

PIC单片机读写时钟芯片DS1302汇编程序

PIC单片机读写时钟芯片DS1302汇编程序
BSF SCLK ;恢复高电平
DECFSZ COUNT1,F
GOTO TR1
BANK1
BCF TRISC,7 ;OUTPUT
BANK0
BCF SCLK ;恢复
RETURN
NOP
PORT_INI
BANK1
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'0'
MOVWF TRISB
MOVLW B'00000111'
MOVWF ADCON1
MOVLW B'00000000'
MOVWF TRISA
BANK0
MOVLW 18H
MOVWF 20H
MOVLW 19H
MOVWF 21H
MOVLW 05H
MOVWF 22H
MOVLW 13H
MOVWF 23H
; 作用:一次接受7个字节的时间数据,突发模式读取
; INPUT:NONE
; OUTPUT:把7个时间数据保存在TIME_RX_ADD开始的7个寄存器里面
;***********************************************
GET_TIME
MOVLW B'10111111'
读秒,可以读任意7个时间,单字节
MOVLW B'10000001'
MOVWF TIME_TX
BSF RST
CALL TIME_WRITE_1
CALL TIME_READ_1
BCF RST
GOTO $

模拟SPI数据传输的读写程序(时钟芯片DS1302为例)

模拟SPI数据传输的读写程序(时钟芯片DS1302为例)

模拟SPI数据传输的读写程序(时钟芯片DS1302为例)
本文是以时钟芯片DS1302为例子来分析时序图并写出代码。

DS1302是采用SPI三线接口与单片机进行同步通信。

重点分析单字节读时序,单字节写时序,寄存器读时序,寄存器写时序,并完成4个函数。

完整代码以及仿真图下载地址:
上图为寄存器读时序,为什么先贴出这个图呢,因为读寄存器包含了单字节的写以及单字节的读。

从图上可以看出,读DS1302的寄存器是先写入一个地址,然后再去读一个字节。

那么就可以根据这个图来完成单字节的读写时序分析以及代码的编写。

单字节写时序图1可以告诉我们,在时钟的上升沿是写入数据,是从低位开始写入。

还有一个需要注意的地方是写字节和读字节连接处,从图中可以看出,当最后一个位写入后,接下来的一个下降沿就开始读数据了,在代码编写时要注意这一点,不然读数据就会出错。

先看看下面的代码:
void dsWriteByte(u8 dat) //写入字节
{
u8 i;
for(i = 0;i 8;i++)
{
if(dat 0x01) ds1302IOStatu(1);
else ds1302IOStatu(0); //低位先写入,根据要写入的数据确定IO的电平
ds1302CLKStatu(0);
ds1302CLKStatu(1); //产生上升沿写入数据
dat = 1; //移位,准备下一位
}
} //写一个字节后,此时时钟脚是高电平。

DS1302读写程序

DS1302读写程序

//读 DS1302RAM 字节 unsigned char TimeRamByteRead(unsigned char address) { TimeSpiOpen();//打开 DS1302 TimeSpiReadWrite((address << 1) | 0xc1);//写入 DS1302 命令 address = TimeSpiReadWrite(0xff);//读入 DS1302 数据 TimeSpdress;//返回数据 }
val = TimeByteRead(timereadseg);//读秒数据 val &= 0x7f;//打开晶振 TimeWrieDisbale();//开放 DS1302 写保护 TimeByteWrite(timewriteseg, val);//打开晶振 TimeByteWrite(tricklewrite, 0xa5);//打开充电二极管 TimeWriteEnable();//使能 DS1302 写保护 }
//打开 DS1302 void TimeSpiOpen(void) { TIMECLK = 0; TIMERST = 0;//禁止 DS1302 TIMEIO } //关闭 DS1302 void TimeSpiClose(void) { TIMERST = 0;//禁止 DS1302 TIMEIO } //读写 DS1302 unsigned char TimeSpiReadWrite(unsigned char val) { unsigned char i; ACC = val;//取 8 位数据 for (i = 8;i > 0; i--) { TIMECLK = 0;//时钟下降沿输入数据(DS1302 读) _nop_();//延时 CY = TIMEIO;//接收串行数据到 CY _rrca_();//右移一位数据到 CY(先存后取) TIMEIO = CY;//发送串行数据 TIMECLK = 1;//时钟上升沿打入数据(DS1302 写) TIMEIO } val = ACC; return val; } //读 DS1302 字节 unsigned char TimeByteRead(unsigned char address) { TimeSpiOpen();//打开 DS1302 TimeSpiReadWrite(address);//写入 DS1302 命令 address = TimeSpiReadWrite(0xff);//读入 DS1302 数据 TimeSpiClose();//关闭 DS1302 return address;//返回数据 } = 1;//释放数据总线 = 1;//释放数据总线 TIMECLK = 1; = 1;//释放数据总线 TIMERST = 1;//使能 DS1302

DS1302读写程序IIC总线

DS1302读写程序IIC总线

DS1302读写程序(IIC总线)#include; //包含单片机寄存器的头文件#include; //包含_nop_()函数定义的头文件#define uchar unsigned char#define uint unsigned intsbit SRT=P3^5;sbit IO=P3^4;sbit SCK=P3^6;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar miao,fen,shi,tian,yue,zhou,nian;uchar read_DS1302(uchar addr)//读DS1302子程序;{uchar dat,i,temp,j;SRT=0;SCK=0;IO=0;//必须先置低,否则易出错;SRT=1;for(i=0;i;>;1;SCK=1;_nop_();}// IO=1;//释放总线,以便接下来的读操作,//否则读出的数据永远都是0x00,//但因addr最高总是1,在传送最高位时,即IO=dat=1, //所以此句可以不要;for(j=0;j;>;=1;if(IO)temp=temp|0x80;SCK=1;_nop_();}SCK=0;//必须严格按时序拉低,不然出错;SRT=0;IO=1;//必须释放总线;return temp;}void write_DS1302(uchar add,uchar date)//写DS1302子程序;{uchar dat1,i,dat2,j;SRT=0;SCK=0;IO=0;SRT=1;_nop_();for(i=0;i;>;1;IO=dat1;SCK=1;_nop_();}for(j=0;j;>;1;IO=dat2;SCK=1;_nop_();}SCK=0;SRT=0;IO=1;}void delay(uint n) {while(n--);}void display(){uchar miao1,miao2,fen1,fen2,shi1,shi2; P0=0xff;P1=0x00;miao1=miao&0x0f;miao2=miao&0xf0;miao2=miao2>;>;4;fen1=fen&0x0f;fen2=fen&0xf0;fen2=fen2>;>;4;shi1=shi&0x0f;shi2=shi&0xf0;shi2=shi2>;>;4;P1=table[miao1];P0=0x7f;delay(200);P1=table[miao2];P0=0xbf;delay(200);P1=0x40;P0=0xdf;delay(200);P1=table[fen1];P0=0xef;delay(200);P1=table[fen2];P0=0xf7;delay(200);P1=0x40;P0=0xfb;delay(200);P1=table[shi1];P0=0xfd;delay(200);P1=table[shi2];P0=0xfe;delay(200);}void main(){//设置日期时间(2013/09/11,21:03:00,星期3);while(1){miao=read_DS1302(0x81);fen=read_DS1302(0x83);shi=read_DS1302(0x85);tian=read_DS1302(0x87);yue=read_DS1302(0x89);zhou=read_DS1302(0x8b);nian=read_DS1302(0x8d);//读取DS18B20数据; P2=miao;display();}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/********************************************************* 文件名称:* IIC.c* 文件说明:* 使用口线模拟IIC* 程序使用波特率为2400,程序运行时需要在pc机上使用一个串口* 接收发送程序,任意发送字符,接收的字符为十六进制时间数据* MSP-FET430P149 Demo - Basic Clock, MCLK Sourced from HF XTAL XT2* L.TCH* Feb 2007* Built with IAR Embedded Workbench Version: 3.10A*******************************************************//*********************************************************/#include <MSP430X14X.h>/********************************************************** 定义*********************************************************/#define RST BIT7#define SDA BIT6#define SCLK BIT5char pbuf[7];char clok[7]={0x16,0x15,0x14,0x13,0x12,0x04,0x07};char cbuf;char bbuf;char *pda;char *pck;char *prg;/************************************************说明************************************************/void Port_Init(void);void Init_CLK(void);void Init_UART0(void);void RST_Enable(void);void RST_Disable(void);void SCLK_HI(void);void SCLK_LO(void);void WriteByte(char nVal);char ReadByte(void);void WriteTo1302(char nAddr, char nVal);char ReadFrom1302(char nAddr);void BurstWriteTime(char *pWClock);void BurstReadTime(char *pRClock);void BurstWriteRam(char *pWReg);void BurstReadRam(char *pRReg);void SetTime(char *pClock);void GetTime(char pTime[]);/***********************************************/void Port_Init(void){P1DIR |= RST; //设置CE为输出管脚P1DIR |= RST; //设置SCLK为输出管脚P1DIR |= SCLK;P2DIR |= 0x02; // Set P2.1 to output directionreturn;}void Init_CLK(void){unsigned int i;BCSCTL1 = 0X00; //将寄存器的内容清零//XT2震荡器开启//LFTX1工作在低频模式//ACLK的分频因子为1do{IFG1 &= ~OFIFG; // 清除OSCFault标志for (i = 0xFF; i > 0; i--);}while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1BCSCTL1 &= ~(XT2OFF + XTS); //open XT2, LFTX2 select low frequency //BCSCTL1 |= RSEL0 + RSEL1 + RSEL2; //DCO Rsel=7(Freq=3200k/25摄氏度)//BCSCTL1 |= 0x07;BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1return;}void Init_UART0(void){U0CTL = 0X00; //将寄存器的内容清零UCTL0|=SWRST;P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXDME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD UCTL0 |= CHAR; // 8-bit characterUTCTL0 |= SSEL1; // UCLK = SMCLKUBR00 = 0xD3; // 3.58Mhz/2400 -1491UBR10 = 0x05; //UMCTL0 = 0x00; // no modulationUCTL0 &= ~SWRST; // Initialize USART state machine IE1 |= URXIE0; // Enable USART0 RX interruptIE1 &= ~UTXIE0; // Disable USART TX interrupt return;}void RST_Enable(void){P1OUT |= RST;return;}void RST_Disable(void){P1OUT &= ~(RST);return;}void SCLK_HI(void){P1OUT |= SCLK;return;}void SCLK_LO(void){P1OUT &= ~(SCLK);return;}/*-------------------------------* 功能: 写入1Byte数据* 调用:* 输入: nVal 写入的数据* 返回值: 无*------------------------------*/void WriteByte(char nVal){char i,j;char nTemp = nV al;char nSend;P1DIR |= SDA; //设置DATA为输出管脚_NOP();_NOP();_NOP();_NOP();for(i = 0; i < 8; i++) //发8位,从0位开始{nSend = (nTemp & 0x01);if(nSend == 1){P1OUT |= SDA;}else{P1OUT &= ~(SDA);}SCLK_HI();for(j = 10;j > 0;j--) ;SCLK_LO();for(j = 10;j > 0;j--) ;nTemp >>= 1; //从0位开始,发8位}return;}/*--------------------------------------* 功能: 读取1Byte数据* 调用:* 输入:* 返回值: nTemp*------------------------------------*/char ReadByte(void){char nTemp = 0;int i;int j;P1DIR &=~SDA; //设置DATA为输入管脚_NOP();_NOP();_NOP();_NOP();for(i = 0; i < 8; i++) //接受8位{SCLK_HI();for(j = 10;j > 0;j--);SCLK_LO();_NOP();_NOP();if(P1IN & SDA) //如果第i位是高电平置1{nTemp |= (0x01 << i);}for(j = 10;j > 0;j--);}return nTemp;}/*-----------------------------------------* 功能: 往DS1302写入1Byte数据* 调用:* 输入: nVal 写入的数据* 返回值: 无*------------------------------------------*/void WriteTo1302(char nAddr, char nVal){RST_Disable();SCLK_LO();RST_Enable();_NOP();_NOP();_NOP();_NOP();WriteByte(nAddr); //地址,命令WriteByte(nVal); //写1Byte数据SCLK_HI();RST_Disable();return;}/*-----------------------------------------* 功能: 从DS1302读取1Byte数据* 调用:* 输入:* 返回值: nDta*-----------------------------------------*/char ReadFrom1302(char nAddr){char nData;RST_Disable();SCLK_LO();RST_Enable();_NOP();_NOP();_NOP();_NOP();WriteByte(nAddr); //地址,命令nData = ReadByte(); //读1Byte数据SCLK_HI();RST_Disable();cbuf = nData; //return(nData);}/*-------------------------------------* 功能: 往DS1302写入时钟数据(多字节方式)* 调用:* 输入: pClock[]: 时钟数据地址格式为: 秒分时日月星期年控制* 8Byte (BCD码)* 返回值: 无*----------------------------------*/void BurstWriteTime(char *pClock){char i;WriteTo1302(0x8e,0x00); //控制命令,写操作.。

WP=0开写保护RST_Disable();SCLK_LO();RST_Enable();WriteByte(0xbe); //0xbe:时钟多字节写命令for (i = 8; i > 0; i--) //8Byte = 7Byte 时钟数据+ 1Byte 控制(即写保护){WriteByte(*pClock); //写1Byte数据pClock++;}SCLK_HI();RST_Disable();return;}/*-----------------------------------------* 功能: 读取DS1302时钟数据(多字节方式)* 调用:* 输入: pClock[]: 时钟数据地址格式为: 秒分时日月星期年控制* 8Byte (BCD码)* 返回值: ucDa :读取的数据*---------------------------------------*/void BurstReadTime(char *pClock){char i;RST_Disable();SCLK_LO();RST_Enable();WriteByte(0xbf); //0xbf:时钟多字节读命令for (i = 8; i > 0; i--){*pClock = ReadByte(); //读1Byte数据pClock++;}SCLK_HI();RST_Disable();return ;}/*-----------------------------------------* 功能: 往DS1302寄存器数写入数据(多字节方式)* 调用:* 输入: pReg: 寄存器数据地址* 返回值: 无*----------------------------------------*/void BurstWriteRam(char *pReg){char i;WriteTo1302(0x8e,0x00); //控制命令,WP=0,写操作RST_Disable();SCLK_LO();RST_Enable();WriteByte(0xfe); //0xfe:寄存器数据多字节写命令for (i = 31; i > 0; i--) //31Byte 寄存器数据{WriteByte(*pReg); //写1Byte数据pReg++;}SCLK_HI();RST_Disable();return;}/*------------------------------------------* 功能: 读取DS1302寄存器数据* 调用:* 输入: pReg: 寄存器数据地址* 返回值: 无*----------------------------------------*/void BurstReadRam(char *pReg){char i;RST_Disable();SCLK_LO();RST_Enable();WriteByte(0xff); //0xff:寄存器数据多字节读命令for (i = 31; i > 0; i--) //31Byte 寄存器数据{*pReg = ReadByte(); //读1Byte数据pReg++;}SCLK_HI();RST_Disable();return;}/*------------------------------------------* 功能: 设置初始时间(以单字节读写进行)* 调用:* 输入: pClock[]: 初始时间地址。

相关文档
最新文档