www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]/********************************************lcd1602_8h.h* * LCD1602操作庫函數(shù),8位數(shù)據(jù)聯(lián)接關(guān)系: * * LCD1602:DB0-DB7 M16:PB0-PB7 * * LCD1602:RS M16:PD3 * * LCD1602:E M16:PD6 * * LCD1602:R/WGND

/*******************************************

*lcd1602_8h.h*
* LCD1602操作庫函數(shù),8位數(shù)據(jù)聯(lián)接關(guān)系: *
* LCD1602:DB0-DB7 M16:PB0-PB7 *
* LCD1602:RS M16:PD3 *
* LCD1602:E M16:PD6 *
* LCD1602:R/WGND *
*******************************************/
//LCD相關(guān)端口定義
#define RS1602 PD3 //RS接在PORTD.3上
#define E1602 PD6//E接在PORTD.6上
#define CLR_RS PORTD&=~(1<#define SET_RS PORTD|=1<#define CLR_E PORTD&=~(1<#define SET_E PORTD|=1<//簡化宏定義
#define uchar unsigned char
#define uint unsigned int

//延時函數(shù):入口i,需要定時的時長
void delay(uint i) //在1M時鐘下為i ms
{
uchar j;
for(;i;i--)
{
for(j=220;j;j--)
{;}
}
}
/*************************************
* LCD1602操作函數(shù)組 *
*************************************/
//寫數(shù)據(jù)到LCD的函數(shù):入口data,需寫入的顯示數(shù)據(jù)
void lcd_da(uchar data)
{
SET_RS; //RS置高,寫數(shù)據(jù)
delay(1);
SET_E;
PORTB=data;//數(shù)據(jù)送端口
delay(1);
CLR_E;//E下降沿寫入數(shù)據(jù)
delay(1);//延時1MS
}

//寫指令到LCD的函數(shù):入口data,需寫入的控制指令
void lcd_comm(uchar data)
{
CLR_RS; //RS清0,寫指令
delay(1);//延時1MS
SET_E;
PORTB=data;//指令送端口
delay(1);
CLR_E;//E下降沿寫入指令
delay(1);//延時1MS
}
//將時鐘數(shù)據(jù)轉(zhuǎn)換后在LCD上顯示
void timer_lcd(void)
{
lcd_comm(0x80); //寫指令:第1行地址
lcd_da(0x20); //留3個空格,使顯示數(shù)據(jù)居中
lcd_da(0x20);
lcd_da(0x20);
lcd_da(0x32); //顯示世紀位:2
lcd_da(0x30); //0

lcd_da((timer[1]>>4)+0x30); //顯示年
lcd_da((timer[1]&0x0f)+0x30);
lcd_da('/');
lcd_da((timer[2]>>4)+0x30); //顯示月
lcd_da((timer[2]&0x0f)+0x30);
lcd_da('/');
lcd_da((timer[3]>>4)+0x30); //顯示日
lcd_da((timer[3]&0x0f)+0x30);

lcd_comm(0xC0); //寫指令:第2行地址
lcd_da(20); //留1個空格

lcd_da((timer[4]>>4)+0x30); //時
lcd_da((timer[4]&0x0f)+0x30);
lcd_da(':');
lcd_da((timer[5]>>4)+0x30); //分
lcd_da((timer[5]&0x0f)+0x30);
lcd_da(':');
lcd_da((timer[6]>>4)+0x30); //秒
lcd_da((timer[6]&0x0f)+0x30);

lcd_da(20); //時間與星期間留1空格
lcd_da('W'); //星期的前導字
lcd_da('e');
lcd_da('e');
lcd_da('k');
lcd_da((timer[7]&0x0f)+0x30); //星期數(shù)據(jù)
}

//調(diào)整顯示函數(shù)
//入口:m為調(diào)整的數(shù)據(jù)說明,i為調(diào)整數(shù)據(jù)
void set_timer_lcd(uchar m,uchar i)
{
lcd_comm(0x80); //寫指令:第1行地址
lcd_comm(0x01); //寫指令:CLS
lcd_da(0x20); //留空格
lcd_da(0x20);
// lcd_da(0x20);
// lcd_da(0x20);
lcd_da('S'); //顯示SET:
lcd_da('E');
lcd_da('T');
lcd_da(':');
lcd_comm(0xC0); //寫指令:第2行地址
lcd_da(20); //留1個空格
switch(m)
{
case 1: //年調(diào)整
{lcd_da('Y');
lcd_da('E');
lcd_da('A');
lcd_da('R');
lcd_da('=');};break;
case 2: //月調(diào)整
{lcd_da('M');
lcd_da('O');
lcd_da('N');
lcd_da('T');
lcd_da('H');
lcd_da('=');};break;
case 3: //日調(diào)整
{lcd_da(0x20);
lcd_da('D');
lcd_da('A');
lcd_da('Y');
lcd_da('=');};break;
case 4: //小時調(diào)整
{lcd_da('H');
lcd_da('O');
lcd_da('U');
lcd_da('R');
lcd_da('=');};break;
case 5: //分調(diào)整
{lcd_da(0x20);
lcd_da('M');
lcd_da('I');
lcd_da('N');
lcd_da('=');};break;
case 7: //周調(diào)整
{lcd_da('W');
lcd_da('E');
lcd_da('E');
lcd_da('K');
lcd_da('=');};break;
default:;break;
}
lcd_da((i>>4)+0x30); //調(diào)整數(shù)據(jù)
lcd_da((i&0x0f)+0x30);
lcd_da(0x20);
lcd_da(0x20);
}

//LCD1602初始化函數(shù)
void lcd_init(void)
{
lcd_comm(0x38); //寫指令:8位數(shù)據(jù)、2行顯示、5*8點陣
delay(5);
lcd_comm(0x06); //寫指令:自左向右顯示
delay(5);
lcd_comm(0x0C); //寫指令:顯示開
delay(5);
lcd_comm(0x14); //寫指令:移動
delay(5);
lcd_comm(0x80); //寫指令:第1行地址
delay(5);
lcd_comm(0x01); //寫指令:CLS
}

//ds1302_h.h

//DS1302操作庫函數(shù),在用M16學習板時可直接引用
//宏定義:
//聯(lián)接DS1302的端口定義
#define ds1302_rst PC4 //定義1302的RST接在PC4
#define ds1302_io PC3 //定義1302的IO接在PC3
#define ds1302_sclk PC2//定義1302的時鐘接在PC2
#define set_ds1302_rst_ddr() DDRC|=1<#define set_ds1302_rst() PORTC|=1<#define clr_ds1302_rst() PORTC&=~(1<#define set_ds1302_io_ddr() DDRC|=1<#define set_ds1302_io() PORTC|=1<#define clr_ds1302_io() PORTC&=~(1<#define clr_ds1302_io_ddr() DDRC&=~(1<#define in_ds1302_io() PINC&(1<#define set_ds1302_sclk_ddr() DDRC|=1<#define set_ds1302_sclk() PORTC|=1<#define clr_ds1302_sclk() PORTC &=~(1<#define ds1302_sec_add 0x80 //秒數(shù)據(jù)地址
#define ds1302_min_add 0x82 //分數(shù)據(jù)地址
#define ds1302_hr_add 0x84 //時數(shù)據(jù)地址
#define ds1302_date_add 0x86 //日數(shù)據(jù)地址
#define ds1302_month_add 0x88 //月數(shù)據(jù)地址
#define ds1302_day_add 0x8a //星期數(shù)據(jù)地址
#define ds1302_year_add 0x8c //年數(shù)據(jù)地址
#define ds1302_control_add 0x8e //控制數(shù)據(jù)地址
#define ds1302_charger_add 0x90
#define ds1302_clkburst_add 0xbe

//簡化宏定義
#define uchar unsigned char
#define uint unsigned int

/*************************************
* DS1302操作函數(shù)組 *
*************************************/
//寫入1302數(shù)據(jù)函數(shù):
//入口:add為寫入地址碼,data為寫入數(shù)據(jù)
//返回:無
void ds1302_write(uchar add,uchar data)
{
uchar i=0;
set_ds1302_io_ddr(); //配置IO為輸出
asm("nop");
asm("nop");
clr_ds1302_rst(); //清復位,停止所有操作
asm("nop");
asm("nop");
clr_ds1302_sclk(); //清時鐘,準備操作
asm("nop");
asm("nop");
set_ds1302_rst(); //置復位,開始操作
asm("nop");
asm("nop");
for(i=8;i>0;i--) //此循環(huán)寫入控制碼
{
if(add&0x01)
set_ds1302_io(); //當前位為1,置數(shù)據(jù)位
else
clr_ds1302_io(); //當前位為0,清數(shù)據(jù)位
asm("nop");
asm("nop");
set_ds1302_sclk(); //產(chǎn)生時鐘脈沖,寫入數(shù)據(jù)
asm("nop");
asm("nop");
clr_ds1302_sclk();
asm("nop");
asm("nop");
add>>=1; //移位,準備寫入下1位
}
for(i=8;i>0;i--) //此循環(huán)寫入數(shù)據(jù)碼
{
if(data&0x01)
set_ds1302_io();
else
clr_ds1302_io();
asm("nop");
asm("nop");
set_ds1302_sclk();
asm("nop");
asm("nop");
clr_ds1302_sclk();
asm("nop");
asm("nop");
data>>=1;
}
clr_ds1302_rst();
asm("nop");
asm("nop");
clr_ds1302_io_ddr(); //清輸出狀態(tài)
asm("nop");
asm("nop");
}
//從1302中讀出數(shù)據(jù):
//入口:add為讀數(shù)據(jù)所在地址
//返回:讀出的數(shù)據(jù)data
uchar ds1302_read(uchar add)
{
uchar data=0;
uchar i=0;
add+=1; //讀標志
set_ds1302_io_ddr(); //端口輸出
asm("nop");
asm("nop");
clr_ds1302_rst(); //清復位
asm("nop");
asm("nop");
clr_ds1302_sclk(); //清時鐘
asm("nop");
asm("nop");
set_ds1302_rst(); //置復位
asm("nop");
asm("nop");
for(i=8;i>0;i--) //此循環(huán)寫入地址碼
{
if(add&0x01)
{set_ds1302_io();}
else
{clr_ds1302_io();}

asm("nop");
asm("nop");
set_ds1302_sclk();
asm("nop");
asm("nop");
clr_ds1302_sclk();
asm("nop");
asm("nop");
add>>=1;
}
clr_ds1302_io_ddr(); //端口輸入
asm("nop");
asm("nop");
for(i=8;i>0;i--) //此循環(huán)讀出1302的數(shù)據(jù)
{
data>>=1;
if(in_ds1302_io())
{data|=0x80;}
asm("nop");
asm("nop");
set_ds1302_sclk();
asm("nop");
asm("nop");
clr_ds1302_sclk();
asm("nop");
asm("nop");
}
clr_ds1302_rst();
asm("nop");
asm("nop");
return(data);
}
//檢查1302狀態(tài)
uchar check_ds1302(void)
{
ds1302_write(ds1302_control_add,0x80);
if(ds1302_read(ds1302_control_add)==0x80) return 1;
return 0;
}
//向1302中寫入時鐘數(shù)據(jù)
void ds1302_write_time(void)
{
ds1302_write(ds1302_control_add,0x00); //關(guān)閉寫保護
ds1302_write(ds1302_sec_add,0x80); //暫停
ds1302_write(ds1302_charger_add,0xa9); //涓流充電
ds1302_write(ds1302_year_add,timer[1]); //年
ds1302_write(ds1302_month_add,timer[2]); //月
ds1302_write(ds1302_date_add,timer[3]); //日
ds1302_write(ds1302_day_add,timer[7]); //周
ds1302_write(ds1302_hr_add,timer[4]); //時
ds1302_write(ds1302_min_add,timer[5]); //分
ds1302_write(ds1302_control_add,0x80); //打開寫保護
}

//秒清0,并啟動時鐘
void start_ds1302(void)
{
ds1302_write(ds1302_control_add,0x00); //關(guān)閉寫保護
ds1302_write(ds1302_sec_add,0x00); //開啟計時,秒清0
ds1302_write(ds1302_control_add,0x80); //打開寫保護
}

/****************************************/

/*ds1302_lcd_h.c */
/*DS1302 實用時鐘程序LCD1602版*/
/* 實驗環(huán)境:阿發(fā)的M16學習板 */
/* 時鐘頻率:內(nèi)部 1.0000Mhz */
/* 編譯系統(tǒng):ICCAVR6.31A */
/* 功 能:通過按鍵S0-S7對時鐘數(shù)據(jù) */
/* 進行調(diào)整,在LCD1602上顯示*/
/* 說 明:S0調(diào)整/正常,S1調(diào)整數(shù)據(jù)轉(zhuǎn)換*/
/* S2調(diào)整減, S3調(diào)整加*/
/* S7確認調(diào)整并寫入暫停走時*/
/* S8啟動時鐘正常走時*/
/****************************************/
#include
#include
#include
#include

//簡化宏定義
#define uchar unsigned char
#define uint unsigned int
//全局變量定義
uchar timer[8]; //時鐘數(shù)據(jù)
//定義按鍵數(shù)據(jù)
uchar key,k1;
uchar k2=0;
uchar set_flag=0; //定義按鍵調(diào)整標志

//延時函數(shù):入口i,需要定時的時長
void delay_ms(uint i) //在1M時鐘下為i ms
{
uchar j;
for(;i;i--)
{
for(j=220;j;j--)
{;}
}
}

//向1302中寫入時鐘數(shù)據(jù)
void ds1302_write_time(void)
{
ds1302_write(ds1302_control_add,0x00); //關(guān)閉寫保護
ds1302_write(ds1302_sec_add,0x80); //暫停
ds1302_write(ds1302_charger_add,0xa9); //涓流充電
ds1302_write(ds1302_year_add,timer[1]); //年
ds1302_write(ds1302_month_add,timer[2]); //月
ds1302_write(ds1302_date_add,timer[3]); //日
ds1302_write(ds1302_day_add,timer[7]); //周
ds1302_write(ds1302_hr_add,timer[4]); //時
ds1302_write(ds1302_min_add,timer[5]); //分
ds1302_write(ds1302_control_add,0x80); //打開寫保護
}
//從1302中讀出當前時鐘
void ds1302_read_time(void)
{
timer[1]=ds1302_read(ds1302_year_add); //年
timer[2]=ds1302_read(ds1302_month_add); //月
timer[3]=ds1302_read(ds1302_date_add); //日
timer[7]=ds1302_read(ds1302_day_add); //周
timer[4]=ds1302_read(ds1302_hr_add); //時
timer[5]=ds1302_read(ds1302_min_add); //分
timer[6]=(ds1302_read(ds1302_sec_add))&0x7F; //秒
}

//將時鐘數(shù)據(jù)轉(zhuǎn)換后在LCD上顯示
void timer_lcd(void)
{
lcd_comm(0x80); //寫指令:第1行地址
lcd_da(0x20); //留3個空格,使顯示數(shù)據(jù)居中
lcd_da(0x20);
lcd_da(0x20);
lcd_da(0x32); //顯示世紀位:2
lcd_da(0x30); //0

lcd_da((timer[1]>>4)+0x30); //顯示年
lcd_da((timer[1]&0x0f)+0x30);
lcd_da('/');
lcd_da((timer[2]>>4)+0x30); //顯示月
lcd_da((timer[2]&0x0f)+0x30);
lcd_da('/');
lcd_da((timer[3]>>4)+0x30); //顯示日
lcd_da((timer[3]&0x0f)+0x30);

lcd_comm(0xC0); //寫指令:第2行地址
lcd_da(20); //留1個空格

lcd_da((timer[4]>>4)+0x30); //時
lcd_da((timer[4]&0x0f)+0x30);
lcd_da(':');
lcd_da((timer[5]>>4)+0x30); //分
lcd_da((timer[5]&0x0f)+0x30);
lcd_da(':');
lcd_da((timer[6]>>4)+0x30); //秒
lcd_da((timer[6]&0x0f)+0x30);

lcd_da(20); //時間與星期間留1空格
lcd_da('W'); //星期的前導字
lcd_da('e');
lcd_da('e');
lcd_da('k');
lcd_da((timer[7]&0x0f)+0x30); //星期數(shù)據(jù)
}

//時鐘調(diào)整加函數(shù):入口b需要調(diào)整的時鐘數(shù)據(jù)位置
void add_timer(uchar b)
{
switch(b)
{
case 1: //年數(shù)據(jù)加1調(diào)整,范圍00-99
{
timer[1]+=0x01;
if((timer[1]& 0x0f)==0x0A)
{
timer[1]=((timer[1]&0xF0)+0x10);
if(timer[1]>0x99)timer[1]=0x00;
}
};break;
case 2: //月數(shù)據(jù)加1調(diào)整,范圍1-12
{
timer[2]+=0x01;
if(timer[2]==0x13)timer[2]=0x01;
if((timer[2]&0x0f)==0x0A)
{
timer[2]=((timer[2]&0xF0)+0x10);
}
};break;
case 3: //日數(shù)據(jù)加1調(diào)整,范圍1-30,暫未考慮31日
{
timer[3]+=0x01;
if(timer[3]>0x30)timer[3]=0x01;
if((timer[3]&0x0f)==0x0A)
{
timer[3]=((timer[3]&0xF0)+0x10);
}
};break;
case 4: //時數(shù)據(jù)加1調(diào)整,范圍0-24
{
timer[4]+=0x01;
if(timer[4]==0x24)timer[4]=0x00;
if((timer[4]&0x0f)==0x0A)
{
timer[4]=((timer[4]&0xF0)+0x10);
}
};break;
case 5: //分數(shù)據(jù)加1調(diào)整,范圍0-59
{
timer[5]+=0x01;
if((timer[5]&0x0f)==0x0A)
{
timer[5]=((timer[5]&0xF0)+0x10);
if(timer[5]>0x59)timer[5]=0x00;
}
};break;
case 7: //星期數(shù)據(jù)加1調(diào)整,范圍1-7
{
timer[7]+=0x01;
if(timer[7]>0x07)timer[7]=0x01;
};break;
default:;break;
}
}
//時鐘調(diào)整減函數(shù):入口b需要調(diào)整的時鐘數(shù)據(jù)位置
void dec_timer(uchar b)
{
switch(b)
{
case 1: //年數(shù)據(jù)減1調(diào)整,范圍00-99
{
timer[1]-=0x01;
if((timer[1]&0x0f)==0x0F)
{
timer[1]=(timer[1]&0xF9);
if(timer[1]>0x99)timer[1]=0x99;
}
};break;
case 2: //月數(shù)據(jù)減1調(diào)整,范圍1-12
{
timer[2]-=0x01;
if(timer[2]==0x00)timer[2]=0x12;
if((timer[2]&0x0f)==0x0F)
{
timer[2]=(timer[2]&0xF9);
}
};break;
case 3: //日數(shù)據(jù)減1調(diào)整,范圍1-30,暫未考慮31日
{
timer[3]-=0x01;
if(timer[3]==0x00)timer[3]=0x30;
if((timer[3]&0x0f)==0x0F)
{
timer[3]=(timer[3]&0xF9);
}
};break;
case 4: //時數(shù)據(jù)減1調(diào)整,范圍0-24
{
timer[4]-=0x01;
if(timer[4]>0x24)timer[4]=0x23;
if((timer[4]&0x0f)==0x0f)
{
timer[4]=(timer[4]&0xF9);
}
};break;
case 5: //分數(shù)據(jù)減1調(diào)整,范圍0-59
{
timer[5]-=0x01;
if((timer[5]&0x0f)==0x0F)
{
timer[5]=(timer[5]&0xF9);
if(timer[5]>0x59)timer[5]=0x59;
}
};break;
case 7: //星期數(shù)據(jù)減1調(diào)整,范圍1-7
{
timer[7]-=0x01;
if(timer[7]<0x01)timer[7]=0x07;
};break;
default:;break;
}
}
/***************************************
* 按鍵讀取判斷函數(shù) *
* 函數(shù)功能:判斷按鍵是否按下 *
* 入口參數(shù):無 *
* 返 回 值:無鍵按下0,有鍵按下為1-8 *
* 說 明:需要在初始化函數(shù)中將接口置 *
* 為輸入 *
***************************************/
uchar rd_key(void)
{
uchar a,b;
a=PINA;
if(a==0xFF)
return(0);
else
{
a=~a;
switch(a)
{
case 0x01:b=1;break;
case 0x02:b=2;break;
case 0x04:b=3;break;
case 0x08:b=4;break;
case 0x10:b=5;break;
case 0x20:b=6;break;
case 0x40:b=7;break;
case 0x80:b=8;break;
default:b=0;break;
}
return(b); //返回的1-8分別對應按鍵S0-S7
}
}

//定時器1:每秒從DS1302中讀取4次數(shù)據(jù),更新顯示
void timer1_init(void) //定時器1初始化:250毫秒定時,預分頻256
{
TCCR1B = 0x00; //停止定時器
TCNT1H = 0xFC; //初值高字節(jié)
TCNT1L = 0x2F; //定時初值低字節(jié)
TCCR1A = 0x00;
TCCR1B = 0x04; //啟動定時器
}
#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void) //定時器1中斷入口:250MS中斷一次
{
TCNT1H = 0xFC; //重裝初值
TCNT1L = 0x2F;
ds1302_read_time(); //讀出當前時鐘
timer_lcd(); //顯示數(shù)據(jù)轉(zhuǎn)換
}

/* 定時器0中斷配置函數(shù)
預分頻數(shù): 256
定時時間: 50mSec
功 能:在進入調(diào)整狀態(tài)20秒內(nèi)沒操作自動回到時鐘狀態(tài)*/
void timer0_init(void)
{
TCCR0 = 0x00; //先關(guān)定器0
TCNT0 = 0x3C; //裝初值
OCR0 = 0x13; //set compare
TCCR0 = 0x04; //開定時器
}
/* 定時器0中斷入口函數(shù) */
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
TCNT0 = 0x3C; //重裝初值
if(k2==0)
{
set_flag=0; //清調(diào)整標志
TCCR1B = 0x04; //啟動定時器1
}
else
k2--;
}

/*************************************
* 主函數(shù) *
*************************************/
void main(void)
{
uchar a=1,b=0;
DDRA=0x00; //設(shè)置按鍵A口為帶上拉輸入:接按鍵
PORTA=0xFF;
DDRC=255; //定義C口為輸出:接LCD背光
DDRB=255; //定義B口為輸出:接LCD數(shù)據(jù)
PORTB=255;
DDRD=0xFB; //定義D口為輸出:接LCD控制,PD2為輸入,中斷按鈕
PORTD=0x04; //PD2上拉

delay_ms(500); //延時500ms,準備LCD初始化
lcd_init(); //初始化LCD
delay_ms(50);

CLI(); //先關(guān)閉所有中斷
timer0_init(); //設(shè)定定時器0
timer1_init(); //設(shè)定定時器1
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x05; //允許定時器0、定時器1中斷
SEI(); //開總中斷

while(1)
{
if(rd_key()!=0)
{
k1=rd_key(); //
delay_ms(20); //
if(rd_key()==k1)
{
key=rd_key();
switch(key)
{
case 1: //調(diào)整和結(jié)束調(diào)整處理
{
if(set_flag==0)
{
set_flag=1;
a=1;
k2=250;
TCCR1B = 0x00; //停止定時器1
set_timer_lcd(1,timer[1]); //年數(shù)據(jù)調(diào)整顯示
}
else
{
set_flag=0;
TCCR1B = 0x04; //啟動定時器
}
};break;
case 2: //調(diào)整數(shù)據(jù)切換
{
if(set_flag==1)
{
a++;
if(a==6)a=7;
if(a>=8)a=1;
set_timer_lcd(a,timer[a]);
k2=250;
}
};break;
case 3: //數(shù)據(jù)減1調(diào)整
{
if(set_flag==1)
{
dec_timer(a);
set_timer_lcd(a,timer[a]);
k2=250;
}
};break;
case 4: //數(shù)據(jù)加1調(diào)整
{
if(set_flag==1)
{
add_timer(a);
set_timer_lcd(a,timer[a]);
k2=250;
}
};break;
case 5:;break;
case 6:;break;
case 7: //寫入調(diào)整后的時鐘并暫停
{
if(set_flag==1)
{
ds1302_write_time(); //寫入調(diào)整后的時鐘并暫停
set_flag=0;
TCCR1B = 0x04; //啟動定時器
b=1;
}
};break;
case 8: //啟動時鐘
{
if(b==1)
{
start_ds1302();
b=0;
}
};break;
default:;break;
}
while(rd_key()!=0)
{
delay_ms(20);
}
}
}
}
}

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉