日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

郭天祥的10天学会51单片机_第十一节

發布時間:2024/8/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 郭天祥的10天学会51单片机_第十一节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考第十節的課件DS12887

RTC就是Real Time Clock實時時鐘

DS12887芯片是保持時間的,即當前設定一個時間,然后斷電,而該芯片的時間還在走

DS12887-5指的是5伏,DS12887-33指的是3.3伏

OSC是時鐘振蕩器(給時鐘提供頻率),下面是電源控制及掉電自動保護,往下是總線接口

DIVID BY 8是八分頻

MOT是總線類型選擇,本節讓MOT接地或不接,即用于Intel模式

NC就是Not Connect不連接

AD0AD7接單片機的P0

TX-1C型單片機實驗板原理圖上的24C02(圖中標錯了,標成24C00)是EEPROM

AS就是Address strobe(地址閘門),接P1^5口,高電平寫地址,低電平鎖存數據

DS就是Data strobe(數據閘門),連到P1^7口,高電平寫數據

R/W連到P1^6

?便找個口,這里用P1^4口,操作時拉低,不操作時拉高

IRQInterrupt Reques)是中斷,接P3^2口(只能接單片機的外部中斷1P3^3口和外部中斷0P3^2口),用于定時鬧鐘后,當中斷發生時IRQ由高電平變成低電平,送到單片機,讓單片機控制蜂鳴器響

RESET接VCC(高電平1)

SQW是方波輸出,見DS12887的P20表3,這里沒用到所以不接

一般時鐘是32.768KHZ石英晶體

見DS12CR887-DS12R887_cn的PDF的P14表2A,時分秒的地址,Second Alarm是秒定時器,例如Second,秒的地址是00H,可以從00H讀出秒的值,只使用BIT0到BIT5;0A到0D是四個定時器;讀的時候先賦地址再賦數據

寫程序的時候要考慮時間,見DS12887P4時間表,指令時間寬度都是納秒,而一個機器周期至少是毫秒,肯定保證機器時間內指令能完成,所以納秒可以不用管

見DS12887的P17給B寄存器設置為26開啟鬧鐘

蜂鳴器是P2^3

見DS12CR887-DS12R887_cn的PDF的P18,如果不讀取C寄存器就會讓IRQ變低后一直保持低電平,只觸發一次中斷,而不能觸發下一次中斷

延時消抖的時間1毫秒是消抖不了的,可以設置成5毫秒

TX-1C型單片機實驗板原理圖上的PL2303是下載口

點擊Options for Target按鈕,在Output菜單頁面上,將Browse Information 點上鉤,作用是要看函數的定義或引用可以用鼠標右鍵選擇最后兩項

標記,鼠標右鍵選擇Toggle Bookmark,然后按F2即可選擇標記所在的行

添加頭文件,寫完頭文件,保存完頭文件,再添加時,保存類型選擇ALL Files,出現的對話框中的Type選擇Text Document File,再確定

以后可以把每個模塊都寫成頭文件,在源文件中添加即可

學完單片機要多練,單片機熟練后可以學嵌入式ARM7,然后ARM9,多鍛煉多實踐

我犯的錯誤:外部中斷03^2口,外部中斷13^3口,把時鐘芯片的IRQ接單片機的3^2

Shizhong.c:

#include<reg52.h>

#include<define.h>

void delay(uint z)

{

???????? uint x,y;

???????? for(x=z;x>0;x--)

?????????????????? for(y=110;y>0;y--);

}

void didi()

{

???????? beep=0;

???????? delay(50);

???????? beep=1;

???????? delay(100);

???????? beep=0;

???????? delay(50);

???????? beep=1;

}

void write_com(uchar com)

{

???????? rs=0;

???????? lcden=0;

???????? P0=com;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;??

}

void write_date(uchar date)

{

???????? rs=1;

???????? lcden=0;

???????? P0=date;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;??

}

void init()

{

???????? uchar num;

???????? EA=1;

???????? EX0=1; //開外部中斷0,使用內部中斷時還需要啟動內部中斷,而外部的時鐘芯片自己一直自動提供頻率,不需要再啟動外部中斷

???????? IT0=1; //外部中斷0,下降沿觸發方式

???????? dula=0;

???????? wela=0;

???????? lcden=0;//先關閉外部中斷,為時鐘芯片的定時中斷做準備

???????? //set_time();//設置時鐘芯片初始時間,這里如果設置,每次開啟單片機就會重新設置時鐘芯片的時間,如果不設置,時鐘芯片會在關閉期間還在走,每次開啟單片機時就會輸出新時間,即上次關閉的時間加上再次開啟之間的時間

???????? set_alarm(14,13,10);

???????? write_ds(0x0B,0x26);//B寄存器里寫26,開啟鬧鐘

???????? read_ds(0x0c);//讀一下C寄存器,見DS12CR887-DS12R887_cnPDFP18,讀一下C

//寄存器為了清除上次IRQ的狀態;因為見DS12CR887-DS12R887_cnPDFP17的鬧鐘中斷使AIEAIE1時,寄存器C的鬧鐘中斷標志AF位驅動產生IRQ信號,見DS12CR887-DS12R887_cnPDFP18,當AF=AIE=1時,IRQF1,讓IRQ變低,這樣IRQ就不能產生下降沿進入中斷,所以要讀一下C寄存器清除IRQ低電平狀態

//????? fen=59;

//????? miao=53;

//????? shi=23;

???????? write_com(0x38);

???????? write_com(0x0c);

???????? write_com(0x06);

???????? write_com(0x01);

???????? write_com(0x80);

???????? for(num=0;num<15;num++)

?????????????????? {

??????????????????????????? write_date(table[num]);

??????????????????????????? delay(5);

?????????????????? }

???????? write_com(0x80+0x40);

???????? for(num=0;num<12;num++)

?????????????????? {

??????????????????????????? write_date(table1[num]);

??????????????????????????? delay(5);

?????????????????? }

}

void write_sfm(uchar add,uchar date)

{

???????? uchar shi,ge;

???????? shi=date/10;

???????? ge=date%10;

???????? write_com(0x80+0x40+add);

???????? write_date(0x30+shi);

???????? write_date(0x30+ge);

}

void keyscan()

{

???????? rd=0;

???????? if(flag1==1)

???????? {

?????????????????? if(s2==0)

?????????????????? {???????

??????????????????????????? delay(5);

??????????????????????????? if(s2==0)

??????????????????????????? {

???????????????????????????????????? while(!s2);

???????????????????????????????????? flag1=0;

??????????????????????????? }

??????????????????????????? ???????

?????????????????? }

?????????????????? if(s3==0)

?????????????????? {???????

??????????????????????????? delay(5);

??????????????????????????? if(s3==0)

??????????????????????????? {

???????????????????????????????????? while(!s3);

???????????????????????????????????? flag1=0;

??????????????????????????? }

?????????????????? }

???????? }

??????????????????

???????? if(s1==0)?

???????? {

?????????????????? delay(5);

?????????????????? if(s1==0)

?????????????????? {??????? s1num++;

??????????????????????????? flag=1;

??????????????????????????? flag1=0;

??????????????????????????? while(!s1);

??????????????????????????? if(s1num==1)

??????????????????????????? {

???????????????????????????????????? TR0=0;

???????????????????????????????????? write_com(0x80+0x40+10);

???????????????????????????????????? write_com(0x0f);

??????????????????????????? }

?????????????????? }

??????????????????????????? if(s1num==2)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+7);

??????????????????????????? }

??????????????????????????? if(s1num==3)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+4);

??????????????????????????? }

??????????????????????????? if(s1num==4)

??????????????????????????? {

???????????????????????????????????? s1num=0;

???????????????????????????????????? write_com(0x0c);

???????????????????????????????????? flag=0;

???????????????????????????????????? write_ds(0,miao);

???????????????????????????????????? write_ds(2,fen);

???????????????????????????????????? write_ds(4,shi);

??????????????????????????? }

????????????????????????????????????

?????????????????? }

?????????????????? if(s1num!=0)

?????????????????? {

??????????????????????????? if(s2==0)

??????????????????????????? {

???????????????????????????????????? delay(1);

???????????????????????????????????? if(s2==0)

???????????????????????????????????? {

?????????????????????????????????????????????? while(!s2);

?????????????????????????????????????????????? if(s1num==1)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? miao++;

??????????????????????????????????????????????????????? if(miao==60)

??????????????????????????? ???????????????????????????????????? miao=0;

??????????????????????????????????????????????????????? write_sfm(10,miao);

??????????????????????????????????????????????????????? write_com(0x80+0x40+10);

???????????????????????????????????????????????????????

???????????????????????????????????????????????????????

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==2)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? fen++;

??????????????????????????????????????????????????????? if(fen==60)

???????????????????????????????????????????????????????????????? fen=0;

??????????????????????????????????????????????????????? write_sfm(7,fen);

??????????????????????????????????????????????????????? write_com(0x80+0x40+7);

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==3)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? shi++;

??????????????????????????????????????????????????????? if(shi==24)

???????????????????????????????????????????????????????????????? shi=0;

??????????????????????????????????????????????????????? write_sfm(4,shi);

??????????????????????????????????????????????????????? write_com(0x80+0x40+4);

?????????????????????????????????????????????? }

???????????????????????????????????? }

??????????????????????????? }

??????????????????????????? if(s3==0)

??????????????????????????? {

???????????????????????????????????? delay(1);

???????????????????????????????????? if(s3==0)

???????????????????????????????????? {

?????????????????????????????????????????????? while(!s3);

?????????????????????????????????????????????? if(s1num==1)

?????????????????????????????????????????????? {

?????????????????????????????????????????????? /*???? if(miao==0)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? miao=59;

???????????????????????????????????????????????????????????????? write_sfm(10,miao);

???????????????????????????????????????????????????????????????? write_com(0x80+0x40+10);

??????????????????????????????????????????????????????? }*/

??????????????????????????????????????????????????????? miao--;

??????????????????????????????????????????????????????? if(miao==-1)

???????????????????????????????????????????????????????????????? miao=59;

??????????????????????????????????????????????????????? write_sfm(10,miao);

??????????????????????????????????????????????????????? write_com(0x80+0x40+10);

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==2)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? fen--;

??????????????????????????????????????????????????????? if(fen==-1)

???????????????????????????????????????????????????????????????? fen=59;

??????????????????????????????????????????????????????? write_sfm(7,fen);

??????????????????????????????????????????????????????? write_com(0x80+0x40+7);

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==3)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? shi--;

??????????????????????????????????????????????????????? if(shi==-1)

???????????????????????????????????????????????????????????????? shi=23;

??????????????????????????????????????????????????????? write_sfm(4,shi);

??????????????????????????????????????????????????????? write_com(0x80+0x40+4);

?????????????????????????????????????????????? }

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

}

void write_ds(uchar add,uchar date)

{

???????? dscs=0;//片選置低電平使用時鐘芯片

???????? dsas=1;//準備給地址

???????? dsds=1; //準備給數據

???????? dsrw=1;//讀

???????? P0=add;//給地址

???????? dsas=0;//鎖存地址

???????? dsrw=0;//寫

???????? P0=date;//寫數據

???????? dsrw=1;

???????? dsas=1;

???????? dscs=1;???????????????????????????????

}

uchar read_ds(uchar add)

{

??????? uchar ds_date;

???????? dsas=1;//準備給地址

???????? dsds=1; //準備給數據

???????? dsrw=1;//讀

???????? dscs=0;

???????? P0=add;//讀入地址

???????? dsas=0;//鎖存地址

???????? dsds=0;

???????? P0=0xff;

???????? ds_date=P0;//數據準備好

???????? dsds=1;//讀入數據

???????? dsas=1;

???????? dscs=1;

???????? return ds_date;???????

}

void set_time()

{

???????? write_ds(4,10);

???????? write_ds(2,32);

???????? write_ds(0,12);

}

void set_alarm(uchar ashi,uchar afen,uchar amiao)

{

???????? write_ds(1,amiao);

???????? write_ds(3,afen);

???????? write_ds(5,ashi);

}

void main()

{

???????? init();

???????? while(1)

???????? {

?????????????????? keyscan();

?????????????????? if(flag1==1)

??????????????????????????? didi();

?????????????????? if(flag==0)

?????????????????? {

??????????????????????????? miao=read_ds(0);???

??????????????????????????? fen=read_ds(2);

??????????????????????????? shi=read_ds(4);

??????????????????????????? write_sfm(10,miao);

??????????????????????????? write_sfm(7,fen);

??????????????????????????? write_sfm(4,shi);

?????????????????? }

???????? }

}

void exter() interrupt 0

{??????? uchar c;

???????? flag1=1;

???????? c=read_ds(0x0c);// 讀一下C寄存器,清除上次IRQ的狀態

}

Define.h:

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

sbit rs=P3^5;

sbit lcden=P3^4;

sbit s1=P3^0;

sbit s2=P3^1;

sbit s3=P3^2;

sbit rd=P3^7;

sbit beep=P2^3;

sbit dscs=P1^4;

sbit dsas=P1^5;

sbit dsrw=P1^6;

sbit dsds=P1^7;

sbit dsirq=P3^3;

uchar count,s1num,flag,flag1;

char miao,shi,fen;

uchar code table[]="? 2007-7-30 MON";

uchar code table1[]="????? :? :? ";

void write_ds(uchar,uchar);

void set_alarm(uchar,uchar,uchar);

uchar read_ds(uchar);

void set_time();

我的程序:

我犯的錯誤:為了防止串口下載程序時不能使用第一行鍵,我把s3定義成P3^3口后,又把dsirq定義成P3^3口,造成沖突

Shizhong.c:

#include<define.h>

void delay(uint z)

{

???????? uchar x,y;

???????? for(x=z;x>0;x--)

?????????????????? for(y=110;y>0;y--);

}

void write_com(uchar com)

{

???????? rs=0;

???????? lcden=0;

???????? P0=com;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;

}

void write_date(uchar date)

{

???????? rs=1;

???????? lcden=0;

???????? P0=date;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;

}

void write_ds(uchar add,uchar date)

{

???????? dsas=1;

???????? dsds=1;

???????? dsrw=1;

???????? dscs=0;

???????? P0=add;

???????? dsas=0;

???????? dsrw=0;

???????? P0=date;

???????? dsas=1;

???????? dsrw=1;

???????? dscs=1;

}

uchar read_ds(uchar add)

{

???????? uchar date;

???????? dsas=1;

???????? dsds=1;

???????? dsrw=1;

???????? dscs=0;

???????? P0=add;

???????? dsas=0;

???????? dsds=0;

???????? P0=0xff;

???????? date=P0;

???????? dsds=1;

???????? dscs=1;

???????? dsas=1;

???????? return date;

}

void set_time()

{

???????? write_ds(4,15);

???????? write_ds(2,30);

???????? write_ds(0,45);

???????? write_ds(7,14);

???????? write_ds(8,2);

???????? write_ds(9,11);

???????? write_ds(6,2);

}

void set_alarm(uchar ashi,uchar afen,uchar amiao)

{

???????? write_ds(5,ashi);

???????? write_ds(3,afen);

???????? write_ds(1,amiao);

}

void init()

{

???????? uchar num;

???????? dula=0;

???????? wela=0;

???????? write_com(0x38);

???????? write_com(0x0c);

???????? write_com(0x06);

???????? write_com(0x01);

???????? write_com(0x80);

???????? for(num=0;num<15;num++)

???????? {

?????????????????? write_date(table1[num]);

?????????????????? delay(5);

???????? }

???????? write_com(0x80+0x40);

???????? for(num=0;num<12;num++)

???????? {

?????????????????? write_date(table2[num]);

?????????????????? delay(5);

???????? }

????????

???????? EA=1;

???????? EX0=1;

???????? IT0=1;

???????? lcden=0;

???????? set_alarm(15,31,10);

???????? write_ds(0x0B,0x26);

???????? read_ds(0x0C);

???????? set_time();

}

void wrtie_sfm(uchar add,uchar sfm)

{

???????? uchar shi,ge;

???????? shi=sfm/10;

???????? ge=sfm%10;

???????? write_com(0x80+0x40+add);

???????? write_date(0x30+shi);

???????? write_date(0x30+ge);

}

void keyscane()

{

???????? rd=0;

???????? if(flag1==1)

???????? {

?????????????????? if(s2==0)

?????????????????? {

??????????????????????????? delay(5);

??????????????????????????? if(s2==0)

??????????????????????????? {

???????????????????????????????????? while(!s2);

???????????????????????????????????? flag1=0;

??????????????????????????? }

?????????????????? }

?????????????????? if(s3==0)

?????????????????? {

??????????????????????????? delay(5);

??????????????????????????? if(s3==0)

??????????????????????????? {

???????????????????????????????????? while(!s3);

???????????????????????????????????? flag1=0;

??????????????????????????? }

?????????????????? }

???????? }

???????? if(s1==0)

???????? {

?????????????????? delay(5);

?????????????????? if(s1==0)

?????????????????? {

??????????????????????????? flag1=0;

??????????????????????????? flag=1;

??????????????????????????? while(!s1);

??????????????????????????? num1++;

??????????????????????????? if(num1==1)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+10);

???????????????????????????????????? write_com(0x0f);

??????????????????????????? }

??????????????????????????? if(num1==2)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+7);

??????????????????????????? }

??????????????????????????? if(num1==3)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+4);

??????????????????????????? }

??????????????????????????? if(num1==4)

??????????????????????????? {

???????????????????????????????????? write_com(0x0c);

???????????????????????????????????? num1=0;

???????????????????????????????????? flag=0;

???????????????????????????????????? write_ds(0,miao);

???????????????????????????????????? write_ds(2,fen);

???????????????????????????????????? write_ds(4,shi);

??????????????????????????? }

?????????????????? }

???????? }

???????? if(num1!=0)

???????? {

?????????????????? if(s2==0)

?????????????????? {

??????????????????????????? delay(5);

??????????????????????????? if(s2==0)

??????????????????????????? {

???????????????????????????????????? while(!s2);

???????????????????????????????????? if(num1==1)

???????????????????????????????????? {

?????????????????????????????????????????????? miao++;

?????????????????????????????????????????????? if(miao==60)

??????????????????????????????????????????????????????? miao=0;

?????????????????????????????????????????????? wrtie_sfm(10,miao);

?????????????????????????????????????????????? write_com(0x80+0x40+10);

???????????????????????????????????? }

???????????????????????????????????? if(num1==2)

???????????????????????????????????? {

?????????????????????????????????????????????? fen++;

?????????????????????????????????????????????? if(fen==60)

??????????????????????????????????????????????????????? fen=0;

?????????????????????????????????????????????? wrtie_sfm(7,fen);

?????????????????????????????????????????????? write_com(0x80+0x40+7);

???????????????????????????????????? }

???????????????????????????????????? if(num1==3)

???????????????????????????????????? {

?????????????????????????????????????????????? shi++;

?????????????????????????????????????????????? if(shi==24)

??????????????????????????????????????????????????????? shi=0;

?????????????????????????????????????????????? wrtie_sfm(4,shi);

?????????????????????????????????????????????? write_com(0x80+0x40+4);

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

?????????????????? if(s3==0)

?????????????????? {

??????????????????????????? delay(5);

??????????????????????????? if(s3==0)

??????????????????????????? {

???????????????????????????????????? while(!s3);

???????????????????????????????????? if(num1==1)

???????????????????????????????????? {

?????????????????????????????????????????????? miao--;

?????????????????????????????????????????????? if(miao==-1)

??????????????????????????????????????????????????????? miao=59;

?????????????????????????????????????????????? wrtie_sfm(10,miao);

?????????????????????????????????????????????? write_com(0x80+0x40+10);

???????????????????????????????????? }

???????????????????????????????????? if(num1==2)

???????????????????????????????????? {

?????????????????????????????????????????????? fen--;

?????????????????????????????????????????????? if(fen==-1)

??????????????????????????????????????????????????????? fen=59;

?????????????????????????????????????????????? wrtie_sfm(7,fen);

?????????????????????????????????????????????? write_com(0x80+0x40+7);

???????????????????????????????????? }

???????????????????????????????????? if(num1==3)

???????????????????????????????????? {

?????????????????????????????????????????????? shi--;

?????????????????????????????????????????????? if(shi==-1)

??????????????????????????????????????????????????????? shi=23;

?????????????????????????????????????????????? wrtie_sfm(4,shi);

?????????????????????????????????????????????? write_com(0x80+0x40+4);

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

???????? }

}

void didi()

{

???????? beep=0;

???????? delay(500);

???????? beep=1;

???????? delay(500);

???????? beep=0;

???????? delay(500);

???????? beep=1;

}

void write_yrn(uchar add,uchar date)

{

???????? uchar shi,ge;

???????? shi=date/10;

???????? ge=date%10;

???????? write_com(0x80+add);

???????? write_date(0x30+shi);

???????? write_date(0x30+ge);

}

void write_xq(uchar date)

{

???????? if(date==1)

???????? {

?????????????????? write_com(0x80+12);

?????????????????? write_date('M');

?????????????????? write_date('O');

?????????????????? write_date('N');

???????? }

???????? if(date==2)

???????? {

?????????????????? write_com(0x80+12);

?????????????????? write_date('T');

?????????????????? write_date('U');

?????????????????? write_date('E');

???????? }

???????? if(date==3)

???????? {

?????????????????? write_com(0x80+12);

?????????????????? write_date('W');

?????????????????? write_date('E');

?????????????????? write_date('N');

???????? }

???????? if(date==4)

???????? {

?????????????????? write_com(0x80+12);

?????????????????? write_date('T');

?????????????????? write_date('H');

?????????????????? write_date('I');

???????? }

???????? if(date==5)

???????? {

?????????????????? write_com(0x80+12);

?????????????????? write_date('F');

?????????????????? write_date('I');

?????????????????? write_date('V');

???????? }

???????? if(date==6)

???????? {

?????????????????? write_com(0x80+12);

?????????????????? write_date('S');

?????????????????? write_date('A');

?????????????????? write_date('T');

???????? }

???????? if(date==7)

???????? {

?????????????????? write_com(0x80+12);

?????????????????? write_date('S');

?????????????????? write_date('U');

?????????????????? write_date('N');

???????? }

}

void main()

{

???????? init();

???????? while(1)

???????? {

?????????????????? keyscane();

?????????????????? if(flag1==1)

?????????????????? {

??????????????????????????? flag1=0;

??????????????????????????? didi();

?????????????????? }

?????????????????? if(flag==0)

?????????????????? {

??????????????????????????? miao=read_ds(0);

??????????????????????????? fen=read_ds(2);

??????????????????????????? shi=read_ds(4);

??????????????????????????? day=read_ds(6);

??????????????????????????? date=read_ds(7);

??????????????????????????? month=read_ds(8);

??????????????????????????? year=read_ds(9);

??????????????????????????? xq=read_ds(6);

??????????????????????????? wrtie_sfm(10,miao);

??????????????????????????? wrtie_sfm(7,fen);

??????????????????????????? wrtie_sfm(4,shi);

??????????????????????????? write_yrn(9,date);

??????????????????????????? write_yrn(6,month);

??????????????????????????? write_yrn(3,year);

??????????????????????????? write_com(0x80+1);

??????????????????????????? write_date(0x30+2);

??????????????????????????? write_date(0x30+0);

??????????????????????????? write_xq(xq);

?????????????????? }

???????? }

}

void exter0() interrupt 0

{

???????? read_ds(0x0C);

???????? flag1=1;

}

Define.h:

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^6;

sbit wela=P2^7;

sbit rs=P3^5;

sbit lcden=P3^4;

sbit rd=P3^7;

sbit s1=P3^0;

sbit s2=P3^1;

sbit s3=P3^2;

sbit dsas=P1^5;

sbit dsds=P1^7;

sbit dsrw=P1^6;

sbit dscs=P1^4;

sbit dsirq=P3^3;

sbit beep=P2^3;

uchar aa,num1,num2,num3,flag,flag1;

char miao,fen,shi,day,date,month,year,xq;

uchar code table1[]=" 2011-02-14 MON";

uchar code table2[]="????? :? :? ";

void write_ds(uchar,uchar);

uchar write_rd(uchar);

void set_time();

void set_alarm(uchar,uchar,uchar);???????? ?

void didi();

void write_yri(uchar,uchar);

void write_xq(uchar);

我調了很多次調不出時鐘的鬧鐘功能,我就先看看能不能接收到時鐘的鬧鐘數值,在set_alarm()中添加didi(),現象是鬧鐘響,說明進入到了時鐘的鬧鐘數值設置中,在didi()中又進入flag=1,讓時鐘靜止,現象是時鐘沒有靜止,說明時鐘設置好鬧鐘后到設定時間沒有進入鬧鐘響聲程序,

總結

以上是生活随笔為你收集整理的郭天祥的10天学会51单片机_第十一节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。