求助!!!在我程序里加入一段小功能模块

[复制链接]
2575|3
 楼主| dong2007 发表于 2008-10-24 00:15 | 显示全部楼层 |阅读模式
我用Proteus模拟做了个电子钟,但还有个模块一直实现不了。就是要在:到了1:00响一声,,&nbsp;&nbsp;2:00响两声,,依次。。。。<br />哪位大哥大姐能帮我修正一下,下面这段程序能实现基本功能,就差扬声器驱动了。。。在此感谢各位了。
 楼主| dong2007 发表于 2008-10-24 00:18 | 显示全部楼层

程序忘了贴上

#include&nbsp;&ltreg51.h&gt<br />#include&nbsp;&ltintrins.h&gt<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;unsigned&nbsp;int<br />sbit&nbsp;SEC=P1^7;<br />sbit&nbsp;MIN=P1^6;<br />sbit&nbsp;HOU=P1^5;<br />uchar&nbsp;code&nbsp;table[]=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9&nbsp;10&nbsp;11&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;13&nbsp;14&nbsp;15&nbsp;&nbsp;16&nbsp;&nbsp;17&nbsp;&nbsp;//<br />{0xc0,0xF9,0xA4,0xB0,0x99,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9&nbsp;&nbsp;A&nbsp;&nbsp;B&nbsp;&nbsp;C&nbsp;&nbsp;D&nbsp;&nbsp;E&nbsp;&nbsp;F&nbsp;&nbsp;OFF&nbsp;&nbsp;-&nbsp;//<br />0x92,0x82,0xF8,0x80,0x90,<br />0x88,0x83,0xc6,0xa1,0x86,<br />0x8e,0xff,0xbf};<br /><br /><br />void&nbsp;delay(uint);<br />uchar&nbsp;econd[8]={16,16,16,16,16,16,16,16};<br />void&nbsp;display(unsigned&nbsp;char&nbsp;display_buffer[8]);<br />uchar&nbsp;flag=0,hour=12,minute=0,second=0;<br />void&nbsp;main()<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;keyval=0,miao=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;ET0=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMOD=0X11;<br />&nbsp;&nbsp;&nbsp;&nbsp;TH0=(65535-50000)/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65535-50000)%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TR0=1;<br />//&nbsp;&nbsp;&nbsp;&nbsp;econd[0]=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />//&nbsp;&nbsp;&nbsp;&nbsp;econd[1]=2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示hour<br />&nbsp;&nbsp;&nbsp;&nbsp;econd[2]=17;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示&nbsp;-<br />//&nbsp;&nbsp;&nbsp;&nbsp;econd[3]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />//&nbsp;&nbsp;&nbsp;&nbsp;econd[4]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示minute<br />&nbsp;&nbsp;&nbsp;&nbsp;econd[5]=17;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示&nbsp;-<br />//&nbsp;&nbsp;&nbsp;&nbsp;econd[6]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />//&nbsp;&nbsp;&nbsp;&nbsp;econd[7]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示second<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(flag==20)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;second++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(second==60)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{second=0;minute++;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(minute==60)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{minute=0;hour++;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SEC==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{delay(5);if(SEC==0){while(!SEC);}second++;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(MIN==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{delay(5);if(MIN==0){while(!MIN);}minute++;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(HOU==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{delay(5);if(HOU==0){while(!HOU);}hour++;}<br />&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////////////////<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;econd[6]=second/10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;econd[7]=second%10;<br />&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////////////////<br />&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////////////////<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;econd[3]=minute/10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;econd[4]=minute%10;<br />&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////////////////<br />&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////////////////<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;econd[0]=hour/10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;econd[1]=hour%10;<br />&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////////////////&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display(econd);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />///////////////////////////////////////////////////////<br />void&nbsp;delay(uint&nbsp;z)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint&nbsp;x,y;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(x=z;x&gt0;x--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(y=100;y&gt0;y--);<br />}<br /><br />//////////////////////////////////////////////////<br />void&nbsp;display(unsigned&nbsp;char&nbsp;display_buffer[8])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;temp,i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt8;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2=temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=_crol_(temp,1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0=table[display_buffer]];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />void&nbsp;timer0()&nbsp;interrupt&nbsp;1<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TH0=(65535-50000)/256;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//延时50ms<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65535-50000)%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;flag++;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />
 楼主| dong2007 发表于 2008-10-24 00:40 | 显示全部楼层

扬声器忘了画上去,随便用个 I/O口都行

  
taoest 发表于 2008-10-26 22:22 | 显示全部楼层

hour

if(minute==0&nbsp;&&&nbsp;second&lt=hour&nbsp;&&&nbsp;flag&lt10)beepPin=1;else&nbsp;beepPin=0;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

185

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部