DSP电子钟程序可在c5416上运行.docx
- 文档编号:7205255
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:15
- 大小:16.38KB
DSP电子钟程序可在c5416上运行.docx
《DSP电子钟程序可在c5416上运行.docx》由会员分享,可在线阅读,更多相关《DSP电子钟程序可在c5416上运行.docx(15页珍藏版)》请在冰点文库上搜索。
DSP电子钟程序可在c5416上运行
#pragmaCODE_SECTION(vect,"vect")
unsignedint*pmem=0;
#defineIMR*(pmem+0x0000)
#defineIFR*(pmem+0x0001)
#definePMST*(pmem+0x001d)
#defineSWCR*(pmem+0x002b)
#defineSWWSR*(pmem+0x0028)
#defineCLKMD*(pmem+0x0058)
#defineST1*(pmem+0x007)
#definePRD0*(pmem+0x0025)/*timer0periodregister*/
#defineTCR0*(pmem+0x0026)/*timer0controlregister*/
#defineucharunsignedchar
#defineulongunsignedlong
#defineuintunsignedint
ucharflag=0x0;
ucharflag1=0x0;
uintcount=0x0;
uintcount1=0x0;
ucharsecond=0x0;
ucharminute=0x0;
ucharhour=0x0;
ucharloca=0;
uintk=0x0;
ioportunsignedportc001;//键盘地址
ioportunsignedportc000;//数码管地址
voiddisplay(void);
staticconstuchartabled[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voidcpu_init()/*初始化DSP*/
{
asm("ssbxintm");
asm("ssbxxf");//总清零
PMST=0xe8;
SWWSR=0x7fff;
SWCR=0x0001;
IMR=0x000c;
IFR=0xffff;
CLKMD=0x000;
PRD0=4;
TCR0=0X669;
asm("rsbxintm");
asm("rsbxxf");//打开数据口
}
voiddelay(unsignedintx)
{
inti;
while(x--)
for(i=1000;i>0;i--);
}
voiddelay10ms()
{intj,k;
for(j=0;j<2;j++)
for(k=0;k<2;k++);
}
/*************************主程序**************************************/
voidmain()
{
cpu_init();
while
(1)
{
display();
}
}
//voiddisplay(unsignedcharhour,unsignedcharminute,unsignedcharsecond)
voiddisplay(void)
{
loca++;
if(loca==8)loca=0;
switch(loca)//显示程序
{case0:
portc000=0x0100+tabled[second%10];break;
case1:
portc000=0x0200+tabled[second/10];break;
case2:
portc000=0x0440;break;//显示-
case3:
portc000=0x0800+tabled[minute%10];break;
case4:
portc000=0x1000+tabled[minute/10];break;
case5:
portc000=0x2040;break;//显示-
case6:
portc000=0x4000+tabled[hour%10];break;
case7:
portc000=0x8000+tabled[hour/10];break;
default:
break;
}
}
/***************************************************************************/
interruptvoidtimer()//定时器测试
{
count=count+1;
if(count==1000)//1000
{
count=0x0;
count1=count1+1;
if(count1==100)//1000*100
{
count1=0x0;
flag=0x01;
second++;
if(second==60)
{second=0;
minute++;
{
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
}
}
interruptvoiddjout()
{
}
interruptvoidkeyint0()//键盘测试
{
inta;
a=portc001;
a=a&0xff00;
if(a!
=0xff00)
{
delay10ms();
a=portc001;
a=a&0xff00;
switch(a)
{
case0xfe00:
//秒++
if(a==0xfe00)
{
delay(5);
if(a==0xfe00)
{
second++;
if(second>59)
{second=0;minute++;
if(minute>59)
{minute=0;}
}
}
}
asm("nop");
break;
case0xfd00:
if(a==0xfd00)
{
delay(5);
if(a==0xfd00)
{
second--;//秒--
if(second<1){second=59;}
}
}
asm("nop");
break;
case0xfb00:
//fen++
if(a==0xfb00)
{
delay(5);
if(a==0xfb00)
{
minute++;
if(minute>59)
{minute=0;hour++;
if(hour>23)
hour=0;
}
}
}
asm("nop");
break;
case0xf700:
//fen--
if(a==0xf700)
{
delay(5);
if(a==0xf700)
{
minute--;
if(minute<1){minute=59;}
}
}
asm("nop");
break;
case0xef00:
//shi++
if(a==0xef00)
{
delay(5);
if(a==0xef00)
{
hour++;//
if(hour>23){hour=0;}
}
}
asm("nop");
break;
case0xdf00:
//shi--
if(a==0xdf00)
{
delay(5);
if(a==0xdf00)
{
hour--;//
if(hour<1){hour=23;}
}
}
asm("nop");
break;
case0xbf00:
//offtimer
if(a==0xbf00)
{
delay(5);
if(a==0xbf00)
{
TCR0=0X0010;
}
}
asm("nop");
break;
case0x7f00:
//opentimer
if(a==0x7f00)
{
delay(5);
if(a==0x7f00)
{
TCR0=0X669;
}
}
asm("nop");
break;
}
}
}
voidvect()
{
asm(".ref_c_int00");
asm(".ref_keyint0");
asm(".ref_djout");
asm(".ref_timer");
asm("b_c_int00");/*reset*/
asm("nop");
asm("nop");
asm("rete");/*nmi*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");//
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*int0*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*int1*/
asm("nop");
asm("nop");
asm("nop");
asm("b_keyint0");/*int2*/
asm("nop");
asm("nop");
asm("b_timer");/*tint0*/
asm("nop");
asm("nop");
asm("rete");/*brint0*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*bxint0*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*dmac0*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*tint1*/
asm("nop");
asm("nop");
asm("nop");
asm("b_djout");/*int3*/
asm("nop");
asm("nop");
asm("rete");/*hpint*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*brint1*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*bxint1*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*dmac4*/
asm("nop");
asm("nop");
asm("nop");
asm("rete");/*dmac5*/
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
.cmd文件
-c
-h
test.obj
-mtest.map
-lrts.lib
-stack0x800
MEMORY
{
PAGE0:
PROG:
origin=080h,length=4000h
PAGE1:
DATA:
origin=800h,length=4000h
}
SECTIONS
{
.text>PROGPAGE0
.cinit>PROGPAGE0
.switch>PROGPAGE0
vect>80hPAGE0
.data>DATAPAGE1
.const>DATAPAGE1
.bss>DATAPAGE1
.sysmem>DATAPAGE1
.stack>DATAPAGE1
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 电子钟 程序 c5416 运行