- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 ARM接口程序设计 7.1 LED显示控制 参考本书2.5.2小节的分析,两个LED数码管的控制地址为00借助于看门狗定时器或定时计数器可实现简单的计数秒表。由于只有两位数码管,秒表计到99秒后,从0开始重新计数。7.1.1 看门狗定时器秒表 在工程ex6_12的基础上,新建工程ex7_1。工程ex7_1的工作界面如图7-1所示。 图7-1 工程ex7_1的工作界面 由图7-1可知,工程ex7_1包括的文件与工程ex6_12中的相同,即S3C2410A.s、leflash.c和cvectaddr.c。在工程ex6_12的同名文件的基础上,只需修改文件cvectaddr.c的内容,添加七段数码管显示操作即可。文件cvectaddr.c的内容如下: 1 #define LED1_MASK 0x20 2 #define LED2_MASK 0x40 3 #define LED3_MASK 0x80 4 5 #define GPCDAT_ADDR (*(volatile unsigned int *) 0 6 7 #define SRCPND (*(volatile unsigned int *) 0x4A000000) 8 #define INTMOD (*(volatile unsigned int *) 0x4A000004) 9 #define INTMSK (*(volatile unsigned int *) 0x4A000008) 10 #define PRIORITY (*(volatile unsigned int *) 0x4A00000C) 11 #define INTPND (*(volatile unsigned int *) 0x4A000010) 12 #define INTOFFSET (*(volatile unsigned int *) 0x4A000014) 13 14 // SEG7 LED Address 15 #define Seg7A (*(volatile unsigned char *)0 16 #define Seg7B (*(volatile unsigned char *)0 17 18 #define U8 unsigned char 19 20 U8 seg7val[16]= 21 { 22 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E 23 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 24 }; 25 26 // enable watchdog timer intterupt 27 void openDog(void) 28 { 29 INTMOD = 0x0; // set as IRQ 30 INTMSK = ~(0x200); // open Dog 31 PRIORITY = 0x7F; 32 } 33 int number=0; 34 int nLED=0; 35 int nCnt=0; 36 __irq void c_Wdt_ISR() 37 { 38 39 int iReg=0; 40 if(SRCPND | 0x200) 41 SRCPND = 0x200; 42 if(INTPND | 0x200) 43 INTPND = 0x200; 44 //INTMSK |= 0xFFFFFFFF; //c
文档评论(0)