久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
MSP430f249讀取DS1302時鐘顯示在1602和串口附仿真
[打印本頁]
作者:
hotpet
時間:
2020-5-12 06:26
標題:
MSP430f249讀取DS1302時鐘顯示在1602和串口附仿真
IAR寫的MSP430f249讀取DS1302時鐘顯示在1602和串口附仿真.
51hei.png
(21.21 KB, 下載次數: 125)
下載附件
2020-5-12 14:28 上傳
單片機源程序如下:
#include <msp430.h>
#include "cry1602.h"
#include "cry1602.c"
#include "DS1302.c"
unsigned char counter=0;
unsigned char second=0;
unsigned char minute=0;
unsigned char hour=0;
//signed char miao=10;
struct sTime bufTime; //time buffer
/*write 1 bcd byte on screen,(x,y)-position on screen, bcd-BCD byte to display*/
void Show2DigitNumber(unsigned char x, unsigned char y,unsigned char number)
{
Disp1Char(x,y,(number/10+0x30 ));
Disp1Char(x+1,y,(number%10 +0x30 ));
}
int main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
if (CALBC1_1MHZ==0xFF) // If calibration constant erased
{
while(1); // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1DIR |= 0x01; // P1.0 output
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
//P6DIR &= ~BIT2; //P6.2 input
P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600; (104)decimal = 0x068h
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
InitDS1302();
/*
P1DIR |= BIT0;//p1.0輸出模式
P1DIR |= BIT1;//p1.1輸出模式
P1DIR |= BIT7;//p1.7輸出模式
P1IE |= BIT2;//使能p1.2中斷
P1IES |= BIT2;//下降沿觸發
P1IFG &= ~BIT2;//清除p1.2中斷
P1IE |= BIT3;//使能p1.3中斷
P1IES |= BIT3;//下降沿觸發
P1IFG &= ~BIT3;//清除p1.3中斷
//P2DIR = 0XFF;P2OUT = 0XFF;
//P6DIR = 0XFF;P6OUT = 0XFF;
*/
LcdReset();
Delay5ms();
DispStr(0,0,"Serial Output:");
DispStr(0,1,"00:00:00");
GetRealTime(&bufTime); //get current time
minute=bufTime.min;minute=(minute>>4)*10+(minute&0x0f);
hour=bufTime.hour;hour=(hour>>4)*10+(hour&0x0f);
Show2DigitNumber(3,1,minute);
Show2DigitNumber( 0,1,hour);
second=DS1302SingleRead(0); second=(second>>4)*10+(second&0x0f);
Show2DigitNumber(6,1,second); //DispStr(8,1," ");
// __enable_interrupt();
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
}
/*
#pragma vector = PORT1_VECTOR
__interrupt void P1_Interrupt()//P1口中斷函數
{
if(P1IFG&BIT2)//如果P1.2有中斷
{
P1IFG &= ~BIT2;//清除P1.2引腳中斷標志位
P1OUT ^= BIT0;//P1.0引腳取反
P1OUT ^= BIT7;//P1.7
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = 97;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = 62;
//Disp1Char(0,1,97);
//Disp1Char(1,1,62);
}
if(P1IFG&BIT3)//如果P1.3有中斷
{
P1IFG &= ~BIT3;//清除P1.3引腳中斷標志位
P1OUT ^= BIT1;//P1.1引腳取反
P1OUT ^= BIT7;//P1.7
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = 50;
//Disp1Char(0,1,50);
//Disp1Char(1,1,32);
}
}
*/
void Read_RTC(void) //讀取 日歷
{
second=DS1302SingleRead(0); second=(second>>4)*10+(second&0x0f);
minute=DS1302SingleRead(1); minute=(minute>>4)*10+(minute&0x0f);
hour=DS1302SingleRead(2); hour=(hour>>4)*10+(hour&0x0f);
}
// Timer A0 interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
#else
#error Compiler not supported!
#endif
{
counter++;
if (counter==20)
{
counter=0;
/*second++;
if (second==60)
{
second=0;
minute++;
if (minute==60)
{
minute=0;
hour++;
if (hour==24)
{ hour=0;}
Show2DigitNumber(0,1,hour); //DispStr(2,1,":");
}
Show2DigitNumber(3,1,minute); //DispStr(5,1,":");
}
*/
//Read_RTC();
P1OUT ^= 0x01; // Toggle P1.0
second=DS1302SingleRead(0); second=(second>>4)*10+(second&0x0f);
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = hour/10+0x30;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = hour%10+0x30;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = 58;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = minute/10+0x30;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = minute%10+0x30;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = 58;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = second/10+0x30;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = second%10+0x30;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = 13;
// Show2DigitNumber(0,1,hour); //DispStr(2,1,":");
// Show2DigitNumber(3,1,minute); //DispStr(5,1,":");
Show2DigitNumber(6,1,second); //DispStr(8,1," ");
//miao = DS1302SingleRead(0);
//miao=(miao>>4)*10+(miao&0x0f);
//miao=DS1302SingleRead(0); miao=(miao>>4)*10+(miao&0x0f);
if (second ==0)
{
GetRealTime(&bufTime); //get current time
minute=bufTime.min;minute=(minute>>4)*10+(minute&0x0f);
hour=bufTime.hour;hour=(hour>>4)*10+(hour&0x0f);
Show2DigitNumber(3,1,minute);
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
msp430+1602+1302+serial.zip
(35.75 KB, 下載次數: 82)
2020-5-12 06:26 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
qee654
時間:
2022-4-16 18:34
最近正好要找一個DS1302的例子參考下謝謝了
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黄色成人毛片
|
国产亚洲久一区二区
|
亚洲成肉网
|
福利视频网址导航
|
91性高潮久久久久久久久
|
日韩伦理在线播放
|
国产精品一区在线播放
|
亚洲精品少妇
|
国产精品一区一区三区
|
久久精品视频网站
|
黄色午夜
|
精品毛片一区二区三区
|
黄色片在线播放
|
999精品视频
|
欧美成人精品一区二区
|
中文字幕二区
|
欧美一级视频
|
欧美日韩一区在线观看
|
欧美成人a
|
日本黄色免费网站
|
成人三级视频
|
亚洲精品在线看
|
一区二区三区在线观看视频
|
亚洲+小说+欧美+激情+另类
|
99色在线
|
国产在线不卡
|
国产a级大片
|
国产精品一二三四
|
久久久久久久免费视频
|
中国av在线播放
|
国产伦理一区二区
|
日日操天天操
|
日韩一区二区三区视频
|
国产三级免费观看
|
成人羞羞国产免费动态
|
一级片久久久
|
毛片av在线
|
国产精品久久久久久久久久久久久久久
|
亚洲第一av
|
神马影院午夜伦理片
|
亚洲综合二区
|