<br />#include "f2407regs.h"<br />#include <stdlib.h><br />#include <stdio.h><br />#include <ctype.h><br />#include <math.h><br />#include <string.h><br /><br />void inline disable(void) /*可屏蔽中断禁止*/<br />{<br /> asm(" setc INTM ");<br />}<br /><br />void inline enable(void) /*未屏蔽中断使能*/<br />{<br /> asm(" clrc INTM ");<br />} <br /><br />void initial(void)<br />{<br /> asm (" clrc CNF"); /*b0被设置为数据存储空间*/<br /> asm (" clrc OVM "); /*累加器中结果正常溢出*/<br /> asm (" setc SXM "); /*符号扩展有效*/<br /> *SCSR1 = *SCSR1|0x0001; /* EVA模块使能*/<br /> *WDCR=0x00e8;<br /> *IMR = *IMR|0X0002; /*中断级INT2被使能,其它屏蔽*/<br /> *IFR = 0XFFFF; /*清除中断标志*/<br />} <br /><br />void timerlint(void)<br />{ <br /> *EVAIFRA = *EVAIFRA|0X0080; /*上溢中断标志复位*/<br /> *EVAIMRA = *EVAIMRA|0x0080; /*上溢中断使能*/ <br /> *T1CON = 0X9005; /*t1连续增计数,定时器禁止,内部时钟,不倍频,等于周期寄存器时重装载*/<br /> *T1CNT=0X00;<br /> *T1CMPR = 0X00FF;<br /> *T1PR = 0XFFFF;<br />}<br /><br />void bright(void)<br />{<br /> *MCRC = *MCRC & 0xbfff; <br /> *PFDATDIR = *PFDATDIR | 0x4040;<br />}<br /><br />void black(void)<br />{<br /> *MCRC = *MCRC & 0xbfff; /*暗的小灯*/<br /> *PFDATDIR = *PFDATDIR | 0x4000;<br /> *PFDATDIR = *PFDATDIR & 0xffbf; <br />}<br /><br />void interrupt T1PINT() /*上溢中断服务程序*/<br />{<br /> int flag,i;<br /> *T1CNT = 0X00;<br /> flag = *EVAIFRA & 0X0400; /*检测上溢中断标志是否为一*/<br /> black();<br /> if (flag != 0x0400) /*不为一*/<br /> {<br /> enable(); /*开总中断*/<br /> return; <br /> }<br /> *EVAIFRA = 0X0400; /*复位上溢中断标志*/<br /> i++;<br /> bright();<br /> if(i==7)<br /> {i=0;<br /> bright();<br /> }<br /> return;<br />}<br /><br />void interrupt nothing()<br />{ <br /> enable(); <br /> return;<br />}<br /><br />void main(void)<br />{ <br /> disable();<br /> initial();<br /> timerlint();<br /> enable();<br /> *T1CON = *T1CON | 0X0040; <br /> while(1) <br /> {<br /> ;<br /> }<br />}<br /> |
|