完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int ***it dula=P2^6; ***it wela=P2^7; ***it rs=P3^5; ***it lcden=P3^4; ***it s1=P3^0; ***it s2=P3^1; ***it s3=P3^2; ***it rd=P3^7; ***it beep=P2^3; ***it dscs=P1^4; ***it dsas=P1^5; ***it dsrw=P1^6; ***it dsds=P1^7; ***it dsirq=P3^3; uchar count,shi,s1num,flag; char si,fen,miao; uchar code table[]=" 2016-08-24 MON"; uchar code table1[]=" : : "; void write_ds(uchar,uchar); void set_alARM(uchar,uchar,uchar); void delay(uint z) { uint 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 set_time(); void init() { uchar num; //EA=1; //EX0=1; //IT0=1; dula=0; wela=0; lcden=0; //si=18; //fen=41; //miao=20; //set_time(); //set_alarm(20,17,00); //write_ds(0x0B,0x26); 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<11;num++) { write_date(table1[num]); delay(5); } TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } 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(s1==0) { delay(5); if(s1==0) { flag=1; while(!s1); s1num++; if(s1num==1) { write_com(0x80+0x40+10); write_com(0x0f); } if(s1num==2) { write_com(0x80+0x40+7); write_com(0x0f); } if(s1num==3) { write_com(0x80+0x40+4); write_com(0x0f);; } if(s1num==4) { s1num=0; write_com(0x0c); flag=0; write_ds(0,miao); write_ds(2,fen); write_ds(4,si); } } } if(s1num!=0) { if(s2==0) { delay(5); if(s2==0) { while(!s2); if(s1num==1) { miao++; if(miao==60) miao=0; write_sfm(9,miao); write_com(0x80+0x40+10); } if(s1num==2) { fen++; if(fen==60) fen=0; write_sfm(6,fen); write_com(0x80+0x40+7); } if(s1num==3) { si++; if(si==24) si=0; write_sfm(3,si); write_com(0x80+0x40+4); } } } if(s3==0) { delay(5); if(s3==0) { while(!s3); if(s1num==1) { miao--; if(miao==-1) miao=59; write_sfm(9,miao); write_com(0x80+0x40+10); } if(s1num==2) { fen--; if(fen==-1) fen=59; write_sfm(6,fen); write_com(0x80+0x40+7); } if(s1num==3) { si--; if(si==-1) si=23; write_sfm(3,si); write_com(0x80+0x40+4); } } } } } void write_ds(uchar add,uchar date) { dsas=1; dsds=1; dsrw=1; dscs=0; P0=add; dsas=0; dsrw=0; P0=date; dsrw=1; dsas=1; dscs=1; } uchar read_ds(uchar add) { uchar ds_date; dscs=0; dsas=1; dsds=1; dsrw=1; P0=add; dsas=0; dsds=0; P0=0xff; //读取前口赋值高 0xff ds_date=P0; dsds=1; dsas=1; dscs=1; return ds_date; } void set_time() { write_ds(4,18); write_ds(2,41); write_ds(0,20); } 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(flag==0) { miao=read_ds(0); fen=read_ds(2); si=read_ds(4); write_sfm(9,miao); write_sfm(6,fen); write_sfm(3,si); } } //while(1); } /*void exter() interrupt 0 { uchar c; beep=0; c=read_ds(0x0c); } */ 这是代码 如果最后一段 [size=15.1999998092651px]void exter() interrupt 0[size=15.1999998092651px]{[size=15.1999998092651px] uchar c;[size=15.1999998092651px] beep=0;[size=15.1999998092651px] c=read_ds(0x0c);[size=15.1999998092651px]} [size=15.1999998092651px]不加的话液晶正常显示时间[size=15.1999998092651px]但如果一旦加进去 就会显示成这样[size=15.1999998092651px][size=15.1999998092651px]不过半分钟之后 时间又能正常显示了 想了很长时间 一直没有答案 |
|
相关推荐
6个回答
|
|
|
|
|
|
恩 不仅显示不出来 按键调节也失效 都是大概半分钟后一切又恢复正常
|
|
|
|
这都看不出来! 你在主函数里对P0口进行操作,中断里也对P0口进行操作,肯定有冲突了…………
你自己想想,假如单片机正在和1602通信当中,这时发生中断,会是什么结果?? |
|
|
|
肯定要中断啊 因为是设置闹钟 问题是我把前面中断关闭了 按说此时中断是不会对主程序产生影响的才对 还有 如果有影响应该一直有影响才对 而不是影响半分钟后就没影响了
|
|
|
|
无语!!麻烦自己仔细看一遍代码,看清楚是怎么运行的!! 很可能是我理解错了,呵呵。。。,我也是小白,不懂
|
|
|
|
不要在中断里做c=read_ds(0x0c);,在中断里做一个标志,在主程序里查询这个标志,当标志有效时,执行c=read_ds(0x0c);
|
|
|
|
只有小组成员才能发言,加入小组>>
3294 浏览 9 评论
2970 浏览 16 评论
3473 浏览 1 评论
9023 浏览 16 评论
4061 浏览 18 评论
1140浏览 3评论
589浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
579浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2313浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1876浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:18 , Processed in 1.276076 second(s), Total 92, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号