河海大学本科课程设计报告
参考文献
[1] 谢自美,电子线路设计、实验、测试,华中理工大学出版社,2003。 [2] 宋春荣,通用集成电路速查手册,山东科学技术出版社,1995。 [3] Arnold Berger,嵌入式系统设计,吕骏 译, 北京:电子工业出版社, 2002 [4] 桑楠. 嵌入式系统原理及应用开发技术,北京:北京航空航天大学出版社, 2002
- 12 -
河海大学本科课程设计报告
附 录
一、源程序:
void c_init() {
wr_circle(123,79,1,1); wr_circle(123,79,2,1); wr_circle(63,139,1,1); wr_circle(63,139,2,1); wr_circle(3,79,1,1); wr_circle(3,79,2,1); wr_circle(63,19,1,1); wr_circle(63,19,2,1);
wr_circle(115,109,1,1); wr_circle(93,131,1,1); wr_circle(33,131,1,1); wr_circle(11,109,1,1); wr_circle(11,49,1,1); wr_circle(33,27,1,1); wr_circle(93,27,1,1); wr_circle(115,49,1,1);
wr_point(c_ox,c_oy,1); wr_circle(c_ox,c_oy,2,1); wr_circle(c_ox,c_oy,62,1); }
void move(unsigned char n) {
line(c_ox,c_oy,sec[2*n],sec[2*n+1],1); }
#define fpclk 2764800 unsigned char min_n; unsigned int hou_n; void rtc_init() {
PREINT=fpclk/32768-1;
PREFRAC=fpclk-(fpclk/32768)*32768; YEAR=2010;
- 13 -
河海大学本科课程设计报告
MONTH=1; DOM=15; HOUR=11; MIN=1; SEC=36; CIIR=0x01; ILR=0x01; CCR=0x01; }
void __irq rtc_int() {
ILR=0x01;
wr_char(9,6,0x10+HOUR/10); wr_char(9,7,0x10+HOUR); wr_char(9,8,0x1a);
wr_char(9,9,0x10+MIN/10); wr_char(9,10,0x10+MIN); wr_char(9,11,0x1a);
wr_char(9,12,0x10+SEC/10); wr_char(9,13,0x10+SEC);
wr_char(11,5,0x10+YEAR/1000);
wr_char(11,6,0x10+YEAR00/100); wr_char(11,7,0x10+YEAR0/10); wr_char(11,8,0x10+YEAR); wr_char(11,9,0xf);
wr_char(11,10,0x10+MONTH/10); wr_char(11,11,0x10+MONTH); wr_char(11,12,0xf);
wr_char(11,13,0x10+DOM/10); wr_char(11,14,0x10+DOM);
if(SEC==0) { line(c_ox,c_oy,sec[59*2],sec[59*2+1],0); line(c_ox,c_oy,sec[0],sec[1],1); } else { line(c_ox,c_oy,sec[SEC*2-2],sec[SEC*2-1],0); line(c_ox,c_oy,sec[SEC*2],sec[SEC*2+1],1); }
if(MIN==0)
- 14 -
河海大学本科课程设计报告
{ line(c_ox,c_oy,min[59*2],min[59*2+1],0); line(c_ox,c_oy,min[0],min[1],1); } else { line(c_ox,c_oy,min[MIN*2-2],min[MIN*2-1],0); line(c_ox,c_oy,min[MIN*2],min[MIN*2+1],1); }
if(HOUR>11) hou_n=((HOUR-12)*60+MIN)/12; else hou_n=(HOUR*60+MIN)/12; if(hou_n==0) { line(c_ox,c_oy,hou[59*2],hou[59*2+1],0); line(c_ox,c_oy,hou[0],hou[1],1); } else { line(c_ox,c_oy,hou[hou_n*2-2],hou[hou_n*2-1],0); line(c_ox,c_oy,hou[hou_n*2],hou[hou_n*2+1],1); }
wr_circle(c_ox,c_oy,2,1); }
void int_init() //中断向量初始化 {
VICIntSelect=0; //设置所有中断为irq中断 VICIntEnable=0x00002000; //中断使能位 VICVectCntl0=0x2d; //中断优先级设置 VICVectAddr0=(int)rtc_int; //中断向量设置 }
int main(void) {
lcd_init(); c_init(); int_init(); rtc_init(); enable_irq(); // move(2);
// line(c_ox,c_oy,min[2],min[3],1); // line(c_ox,c_oy,hou[0],hou[1],1); while(1); }
- 15 -