嵌入式S3C2410计算器小程序ARM9

上传人:橙** 文档编号:333363108 上传时间:2022-09-01 格式:PDF 页数:23 大小:135.53KB
返回 下载 相关 举报
嵌入式S3C2410计算器小程序ARM9_第1页
第1页 / 共23页
嵌入式S3C2410计算器小程序ARM9_第2页
第2页 / 共23页
嵌入式S3C2410计算器小程序ARM9_第3页
第3页 / 共23页
嵌入式S3C2410计算器小程序ARM9_第4页
第4页 / 共23页
嵌入式S3C2410计算器小程序ARM9_第5页
第5页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《嵌入式S3C2410计算器小程序ARM9》由会员分享,可在线阅读,更多相关《嵌入式S3C2410计算器小程序ARM9(23页珍藏版)》请在金锄头文库上搜索。

1、基于S3C2410 ARM9 的 计算器小程序,下面是源代码。以及7279 接口和相应的驱动程序。#include 2410addr.h/加载地址一些最基本的地址#include#include 7279.h/7279 控制数码管和键盘的int counter=0,operation=0,edge=0;/counter是用来计算你输入的次数的你琽peration 用来判断是否有int key_number1=0,key_number2=0,key_number3=0,key_number=0,math=0,out_bit6,yes_key=0;int allnumber20;void resu

2、lt()int n=counter-1;int i=0;key_number1=0;key_number2=0;key_number3=0;for(i=0;iedge-1;i+)key_number1=(key_number1*10+allnumberi);for(i=edge;i=n;i+)key_number2=(key_number2*10+allnumberi);i=edge-1;switch(allnumberi)case 10:key_number3=key_number1+key_number2;break;case 11:key_number3=key_number1-key_

3、number2;break;case 12:key_number3=key_number1*key_number2;break;case 13:key_number3=key_number1/key_number2;break;for(i=0;i6;i+)out_biti=key_number3%0 x0a;key_number3=key_number3/0 x0a;write7279(DECODE1+i,out_biti);void _irq Keyaddnumb(void)yes_key=1;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 23 页 -rINTMSK|=(BI

4、T_EINT2);/key_number=read7279(CMD_READ);key_number=read7279(CMD_READ);ClearPending(BIT_EINT2);/清除中断标志rINTMSK&=(BIT_EINT2);/yes_key=0;void Main()int j=0;Init7279();/EINT2 Rise rGPFCON=(rGPFCON&0 xff0f)|0 x0060;/GPF2:Interrupt;GPF3:Out 7279CS/extern int p=0;/for(p=0;p20;p+)allnumberp=0;send_byte(CMD_R

5、ESET);write7279(0 x98,0 xff);rEXTINT0=(rEXTINT0&0 xffff00FF)|0 x00000400;pISR_EINT2=(unsigned)Keyaddnumb;rINTMOD=0 x0;/设置为 IRQ 模式rINTMSK&=(BIT_EINT2);/打开 keyboard 中断do if(yes_key=1)switch(key_number)case 0 x03:key_number=0;operation=0;break;case 0 x0b:key_number=1;operation=0;break;case 0 x13:key_nu

6、mber=2;operation=0;break;case 0 x1b:key_number=3;operation=0;break;case 0 x04:key_number=4;operation=0;break;case 0 x0c:key_number=5;operation=0;break;case 0 x14:key_number=6;operation=0;break;case 0 x1c:key_number=7;operation=0;break;case 0 x05:key_number=8;operation=0;break;case 0 x0d:key_number=9

7、;operation=0;break;case 0 x15:key_number=10;operation=1;break;case 0 x1d:key_number=11;operation=2;break;case 0 x06:key_number=12;operation=3;break;case 0 x0e:key_number=13;operation=4;break;case 0 x16:key_number=14;operation=5;break;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 23 页 -case 0 x1e:key_number=15;oper

8、ation=6;break;if(key_number=14)result();for(j=0;j19;j+)allnumberj=0;counter=0;edge=0;else if(key_number=15)/while(1)/for(j=0;j1000000;j+)short_delay();send_byte(CMD_RESET);/*Init7279();/EINT2 Rise rGPFCON=(rGPFCON&0 xff0f)|0 x0060;/GPF2:Interrupt;GPF3:Out 7279CS rEXTINT0=(rEXTINT0&0 xffff00FF)|0 x00

9、000400;pISR_EINT2=(unsigned)Keyaddnumb;rINTMOD=0 x0;/设置为 IRQ 模式rINTMSK&=(BIT_EINT2);/打开 keyboard 中断/result();*/break;/else allnumbercounter+=key_number;yes_key=0;if(yes_key=0&operation=0)int j=0,p;if(edge0)/if(edge1)for(j=1;j1&counter0)send_byte(CMD_RESET);write7279(0 x98,0 xff);for(j=1;j=counter-ed

10、ge;j+)write7279(DECODE0+5+1-j,allnumberedge+j-1);/else send_byte(CMD_RESET);else if(0operation5)edge=counter;operation=0;while(1);#include 2410addr.h#include 7279.h void Init7279(void)rGPEUP=rGPEUP|0 x3800;/使用 GPE11 GPE12 GPE13,去掉对应上拉功能rGPECON=(rGPECON&0 xf03fffff)|0 x05000000;/GPE11:In Data;GPE12:O

11、ut Data;GPE13:Out CLK rGPFUP=rGPFUP|0 x0c;/使用 GPF2 GPF3/rGPFCON=(rGPFCON&0 xff0f)|0 x0040;/GPF2:In Key;GPF3:Out 7279CS rGPFCON=(rGPFCON&0 xff0f)|0 x0060;/GPF2:In Key;GPF3:Out 7279CS rGPFDAT=rGPFDA T|0 x08;/GPF3=1 rGPFDAT=rGPFDA T&0 xf7;/GPF3=0 选通 7279 rGPGUP=rGPGUP|0 x0040;/使用 GPG6,去掉对应上拉功能rGPGCON=(

12、rGPGCON&0 xffffcfff)|0 x01000;/GPG6:Out 74H125 C1&(C2)rGPGDAT=rGPGDAT&0 xffbf;/GPG6=0 void write7279(unsigned char cmd,unsigned char dta)send_byte(cmd);send_byte(dta);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 23 页 -unsigned char read7279(unsigned char command)send_byte(command);return(receive_byte();void send_

13、byte(unsigned char out_byte)unsigned char i;setcsLOW;long_delay();for(i=0;i8;i+)if(out_byte&0 x80)setdatHIGH;else setdatLOW;setclkHIGH;short_delay();setclkLOW;short_delay();out_byte=out_byte*2;setdatLOW;unsigned char receive_byte(void)unsigned char i,in_byte;setdatZ;short_delay();for(i=0;i8;i+)setcl

14、kHIGH;short_delay();in_byte=in_byte*2;if(dat)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 23 页 -in_byte=in_byte|0 x01;setclkLOW;short_delay();setdatL;return(in_byte);void long_delay(void)unsigned char i;for(i=0;i0 x30;i+);void short_delay(void)unsigned char i;for(i=0;i0 x0a;i+);void delay10ms(unsigned char time)u

15、nsigned char i;unsigned int j;for(i=0;itime;i+)for(j=0;j11/GPE11#define key(rGPFDA T&0 x04)2/GPF2#define cs(rGPFDA T&0 x08)3/GPF3#endif/*_7279_H_*/=/File Name:2410addr.h/Function:S3C2410 Define Address Register/Program:Shin,On Pil(SOP)/Date:May 06,2002/Version:0.0/History/0.0:Programming start(Febru

16、ary 15,2002)-SOP/INTERRUPT rPRIORITY 0 x4a00000a-0 x4a00000c(May 02,2002 SOP)/RTC BCD DAY and DA TE Register Name Correction(May 06,2002 SOP)/=名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 23 页 -#ifndef _2410ADDR_H_#define _2410ADDR_H_#ifdef _cplusplus extern C#endif#define FCLK 200000000#define HCLK(200000000/2)#define PCLK(200000000/4)#define UCLK PCLK/#define FCLK 202800000/#define HCLK(202800000/2)/#define PCLK(202800000/4)/#define UCLK PCLK/BUSWIDTH:16,32#define BUSWIDTH(32)/64MB/0 x30000000 0 x30ffffff:D

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号