文档详情

定时器实验全解.ppt

发布:2016-12-14约3.07千字共15页下载文档
文本预览下载声明
DSP实验 之 定 时 器 实 验 小组成员: 易 韬 王宁 翁旋堂 谢考聪 杨锦 尹超 实验目的 了解 DSP 汇编程序的构成 了解 DSP 程序各段的含义 熟悉在汇编条件下如何编写中断服务程序 了解串行通讯的过程 掌握长时间间隔的定时器的处理 掌握片内外设的设置方法。 实验内容 DSP 的初始设置 DSP 中断向量表的建立 定时中断的编写 查询方式异步串口程序的编写 定时器简介 定时器由三个寄存器组成:TIM、PRD、TCR。 TIM:定时器寄存器,用于装载周期寄存器值并自减1。 PRD:周期寄存器,用于装载定时器寄存器。 TCR:定时器控制寄存器,包含定时器的控制状态位。 定时器是一个片内减计数器,用于周期地产生CPU中断。定时器被预定标计数器所触发,后者每个CPU时钟周期减1,当计数器减至0时,会产生一个定时器中断,同时在下一周期计数器被定时周期值重新装载。 定时器功能框图 设 计 流 程 图 转下页 uchar flag=0x0; uchar flag1=0x0; uint count=0x0; uint count1=0x0; uchar second =0x0; uchar minute =0x0; uchar hour =0x0; uchar loca =0; uint k=0x0; ioport unsigned portc001; //键盘地址 ioport unsigned portc000; //数码管地址 void display(void); static const uchar tabled[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; 接上页(初始化) void cpu_init() /*初始化DSP*/ { asm( ssbx intm); asm( ssbx xf); //总清零 PMST=0xe8; SWWSR=0x7fff; SWCR=0x0001; IMR=0x000c; IFR=0xffff; CLKMD=0x000; PRD0=5; TCR0=0X669; asm( rsbx intm); asm( rsbx xf); //打开数据口 } 延时程序: void delay(unsigned int x) { int i; while(x--) for(i=1000;i0;i--); } Void delay 10ms() { int j,k; for (j=0;j2;j++) for (k=0;k2;k++); } 主程序: void main() { cpu_init(); while(1) { display(); } } 显示程序: void display(void) { loca++; if(loca==8) loca=0; switch(loca)//显示程序 { case 0: portc000=0x0100+tabled[second%10]; break; case 1: portc000=0x0200 + tabled[second/10]; break case 2: portc000=0x0440; break;//显示- case 3: portc000=0x0800 + tabled[minute%10]; break; case 4: portc000=0x1000 + tabled[minute/10]; break; case 5: portc000=0x2040; break;//显示- case 6: portc000=0x4000 + tabled[hour%10]; break; case 7: portc000=0x8000 + tabled[hour/10]; break; default: break; }
显示全部
相似文档