PIC单片机-多功能万年历电子钟.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《PIC单片机-多功能万年历电子钟.pdf》由会员分享,可在线阅读,更多相关《PIC单片机-多功能万年历电子钟.pdf(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、PIC 单片机-多功能万年历电子钟;*LIST P=PIC16F72#INCLUDE;*#DEFINE DIO_APORTA;RA 端口寄存器#DEFINE DIO_BPORTB;RB 端口寄存器#DEFINE DIO_CPORTC;RC 端口寄存器#DEFINE SIO_ATRISA;RA 端口输入、输出设定#DEFINE SIO_BTRISB;RB 端口输入、输出设定#DEFINE SIO_CTRISC;RC 端口输入、输出设定;=数码管共脚位定义=#DEFINE HOUH_LEDPORTB,3;数码管位选#DEFINE HOUL_LEDPORTB,2;数码管位选#DEFINE MINH_
2、LEDPORTB,1;数码管位选#DEFINE MINL_LEDPORTB,0;数码管位选#DEFINE SEC_LEDPORTB,4;LED 位选;=按键脚位定义=#DEFINE SETUP_KEYPORTA,3;时钟设置键#DEFINE INCREASE_KEY PORTA,4;时间加键#DEFINE DECREASE_KEY PORTA,5;时间减键;=DS1302 引脚定义=#DEFINE T_CLKPORTA,0;1302 时钟-7#DEFINE T_IOPORTA,1;1302 数据输入/输出-6#DEFINE T_RSTPORTA,2;1302 使能位-5#DEFINE SET_
3、IOTRISA,1;设定 1302I_O;=#DEFINE FLAG_10SFLAG,7;#DEFINE FLAG_SETUPFLAG,6;#DEFINE FLAG_500MSFLAG,5;#DEFINE FLAG_250MSFLAG,4;#DEFINE FLAG_MINUTEFLAG,3;#DEFINE FLAG_HOURFLAG,2;#DEFINE FLAG_TIMEFLAG,1;#DEFINE FLAG_DATEFLAG,0;=#DEFINE FLAG_YEARFLAG1,7;#DEFINE FLAG_DAYFLAG1,6;#DEFINE FLAG_DATAFLAG1,5;*寄存器定义*
4、ID_TEMPEQU72HW_TEMPEQU73HSTATUS_TEMPEQU74HPCLATH_TEMPEQU75H1/1 ERRORLEVEL-302 CBLOCK 020HSEC;秒寄存器MINUTE;分寄存器HOUR;小时寄存器DATE;日寄存器MONTH;月寄存器DAY;星期寄存器YEAR;年寄存器WRITE_ENABLED;写使能寄存器DS1302_RX;保存接受的 1 个数据DS1302_TX;准备写入到 DS1302 的一个数据BYTE_COUNT;字节数寄存器BIT_COUNT;BIT 数寄存器TEMP1;转换进制用TIMER0;TIMER1;定时用TIMER2;/;-FLA
5、GFLAG1FSR_TEMPCOUNTCOUNT1;显示数据位数COUNT2;显示数据表中位置COUNT3;显示位置COUNT4CNTCNT0CNT1CNT2SHOW_MINSHOW_HOUDATA_INCDATEPC1;C2;C3;ENDC;*宏定义*BANK1 MACRO;体 1BSRSTATUS,RP0BCRSTATUS,RP1ENDM1/1BANK0 MACRO;体 0BCRSTATUS,RP0BCRSTATUS,RP1ENDM;-;子程序名:;功能:中断服务主程序入口;功能说明:;-INTERMIT_SERVE:;-现场保护-STWRW_TEMP;SWAPRSTATUS,W;CLRR
6、STATUS;STWRSTATUS_TEMP;LDRPCLATH,W;STWRPCLATH_TEMP;CLRRPCLATH;-中断服务-INCRTIMER0,F;LDWI .100;XORWRTIMER0,W;判断是否到 250MSBTSSSTATUS,Z;/LJUMPAAA;ON,LDWIB00010000;每到 250MS 取反一次标志位 1XORWRFLAG,F;/CLRRTIMER0INCRTIMER1,F;LDWI .2;XORWRTIMER1,W;判断是否到 500MSBTSSSTATUS,Z;/LJUMPAAA;ON,LDWIB00100000;每到 500MS 取反一次标志位
7、1XORWRFLAG,F;/CLRRTIMER1;YES,INCRTIMER2,F;LDWI .20;XORWRTIMER2,W;判断是否到 5SBTSSSTATUS,Z;/LJUMP$+3;/CLRRTIMER2;YES,BSRFLAG_10S;DP_SECLCALLPLAY_SEC1/1MOVFWDIO_BANDWI0F0HSTWRDIO_BCLRRDIO_CINCRCOUNT,FLDWI01H;XORWRCOUNT,WBTSCSTATUS,ZLCALLPLAY_HOUR_H;LDWI02H;XORWRCOUNT,WBTSCSTATUS,ZLCALLPLAY_HOUR_L;LDWI03H;
8、XORWRCOUNT,WBTSCSTATUS,ZLCALLPLAY_MINUTE_H;LDWI04H;XORWRCOUNT,WBTSSSTATUS,ZLJUMP$+3CLRRCOUNTLCALLPLAY_MINUTE_L;LDWI0D9H;STWRTMR0;/写入 TMR0 初始值BCRINTCON,T0IF;清 TMR0 中断标志;-恢复现场-LDRPCLATH_TEMP,W;STWRPCLATH;SWAPRSTATUS_TEMP,F;STWRSTATUS;SWAPRW_TEMP,F;SWAPRW_TEMP,W;RTFI;中断返回;.;子程序名:;功能:清寄存器;功能说明:;.CLR_RAM
9、:LDWI20HSTWRFSRCLRRINDFINCRFSR,F1/1BTSSFSR,7LJUMP$-3RTIW00H;-;子程序名:;功能:查表子程序;功能说明:用于显示 0-9 时钟数据字型码,共阳 LED 无小数点;-TABLE:ADDWRPCL,FRTIWB11001111;0RTIWB00000101;1RTIWB11011100;2RTIWB10011101;3RTIWB00010111;4RTIWB10011011;5RTIWB11011011;6RTIWB00001101;7RTIWB11011111;8RTIWB10011111;9;.Program Initializati
10、on.;子程序名:单片机复位进入点;功能:;功能说明:;.PORT_INIT:CLRRINTCON;清除中断BANK1;LDWIB00000000;STWRSIO_C;RC 口设为输出LDWIB11100000;STWRSIO_B;/RB 口设为输入LDWIB11111000;STWRSIO_A;LDWI06H;STWRADCON1;A 口配置为普通数字 I/OLDWIB10000101;设 TMR0 分频 1:64STWROPTION_REG;/RB 口同时输入、出时不能上拉BANK0;-CLRRDIO_A;清控制位CLRRDIO_BCLRRDIO_C;关闭显示LDWI0DAH;写入 TMR
11、0 初始值1/1STWRTMR0;/2.5MS 中断一次LDWIB10100000;开 TMR0 中断使能位STWRINTCON;/LCALLCLR_RAM;-清寄存器LCALLDS1302_INIT;-初始化 DS1302LCALLREAD_DS1302;CALLDATE_INIT;CALLWRITE_DS1302;/写数据LCALLQINDON_INITMOVFWDATESTWRDATEP;%;程序名:;功能:;功能说明:;%MAIN_PROGRAM:BTSCFLAG_SETUPLJUMP$+3;NOP;NOPLCALLDELAY250MSLCALLREAD_DS1302;BTSSFLAG
12、_10S;检测是否到 5SLJUMP$+3;CLRRFLAG;3S 到,退出校正时间状态CLRRFLAG1;MOVFWDATEXORWRDATEP,WBTSCSTATUS,ZLJUMPTEST_KEYLDWI030HSUBWRSEC,WBTSSSTATUS,ZLJUMPTEST_KEY;-检测按键LDWI005HSUBWRSEC,FLCALLWRITE_DS1302;写入设置的数据MOVFWDATESTWRDATEPLJUMPMAIN_PROGRAM;循环;%TEST_KEY:NOP;1/1LDRDIO_A,W;ANDWIB00111000;XORWIB00111000;检测是否有按键按下?B
13、TSCSTATUS,Z;/LJUMPMAIN_PROGRAM;/BCRFLAG_10S;YES,重新启动 5S 到标记CLRRTIMER2;/;-BTSCFLAG_DATA;显示日期时禁止调整LJUMPMAIN_PROGRAM;/BTSSSETUP_KEY;检测是否按时间设置键?LJUMPSETUP;YES,跳设置键处理程序BTSSINCREASE_KEY;检测是否按增键?LJUMPINCREASE;YES,BTSSDECREASE_KEY;检测是否按减键?LJUMPDECREASE;YES,LJUMPMAIN_PROGRAM;时间设置键处理SETUP:LCALLDELAY_10MS;BTSS
14、SETUP_KEY;检测设置键是否松开?LJUMP$-2;/LCALLDELAY_10MS;LDWISHOW_HOU;STWRFSR;第一个调整单元LDWI24HSTWRDATA_INC;调整最大值BSRFLAG_SETUPBSRFLAG_HOURBSRFLAG_TIMELJUMPTEST_KEYDEC_MIN:INCRCOUNT2,FLDWI01H;XORWRCOUNT2,WBTSSSTATUS,ZLJUMPDEC_MON;02HLDWISHOW_MINSTWRFSR;调整单元地址LDWI60HSTWRDATA_INC;调整最大值BSRFLAG_MINUTEBCRFLAG_HOURDEC_M
15、ON1/1LDWI02H;XORWRCOUNT2,WBTSSSTATUS,ZLJUMPDEC_DATE;03HBSRFLAG_HOURBCRFLAG_MINUTEBSRFLAG_DATEBCRFLAG_TIMEDEC_DATELDWI03H;XORWRCOUNT2,WBTSSSTATUS,ZLJUMPDEC_YEAR;04HLDWISHOW_MINSTWRFSR;调整单元地址LDWI32HSTWRDATA_INC;调整最大值BSRFLAG_MINUTEBCRFLAG_HOURDEC_YEARLDWI04H;XORWRCOUNT2,WBTSSSTATUS,ZLJUMPDEC_DAY;05HMOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PIC 单片机 多功能 万年历 电子钟
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内