SAMSUNG S3C9454 示例程序

发布者:快乐的天使最新更新时间:2018-01-29 来源: eefocus关键字:SAMSUNG  S3C9454 手机看文章 扫描二维码
随时随地手机看文章

//PROJECT : EA21
//IC      : SAMSUNG S3C9454

#include "ioS3C9454.h"             

//自己编写,注意const    ?


//****************************
// PIN define area 
//*****************************
#define  CONTROL_RelayLight (P0&0x04)     //P0.2
#define  SET_RelayLight         (P0|=0x04)    
#define  CLR_RelayLight         (P0&=0xFB)

#define  CONTROL_RelayCyclone (P0&0x08)     //P0.3          
#define  SET_RelayCyclone (P0|=0x08)    
#define  CLR_RelayCyclone        (P0&=0xF7)

//*********************************        
//function declare area
//*********************************
void   io_init(void);
void   delay(void);
void   AD_CONV(void);
void   MOV ingData(void);
void   JudgingKey(void);
void   DealKey(void);
void   DealDelayClose(void);
void   DealDelayLOCk(void);
void   DealBuzz(void);
void   DealLockMotor(void);
void   ram_init(void);            


//*********************************
//constant  define area
//*********************************
#define  DelayKey    0x01
#define  PowerKey    0x02
#define  CycloneKey  0x04
#define  LightKey    0x08
#define  LockKey     0x10
#define  BigWindKey  0x20
#define  SILenceKey  0x40            

//*********************************
//variable define area
//*********************************
unsigned char VolData[7][5];     //如果上电前,即使按键按下,也不识别,那么,初始化为0就可以,
                                 //如果需要识别,就要处理??
unsigned char Key_OldStatus;     //表示前一时刻键的状态,1表示按下,0表示弹起
unsigned char RepeatKey_Status;  //表示重键的状态,1表示有,0表示无,对应七个键
unsigned char Key_NowPushStatus; //表示现在键按下的状态

#define  CONTROL_LockStatus  (SYS_Status&0x01)
#define  SET_LockStatus          (SYS_Status|=0x01)    
#define  CLR_LockStatus    (SYS_Status&=0xFE)


//*********************************
//table define area
//*********************************
//code unsigned char AnalogChannel[7]={0x00,0x00,0x01,0x01,0x02,0x02,0x03};
//code unsigned char ADChannel[7]={0x05,0x15,0x05,0x15,0x05,0x15,0x15};

//*********************************
//SUB PROGRAM ROUTINE
//*********************************
void io_init(void)
{
 
 CLKCON = 0x18; // cpu clock is non-divided clock       
 BTCON = 0xA3;   // dISAble watch-dog, select fxx/4096 for basic timer clock   
                                //btcon = 0x02, enable watch-dog    
 SP = 0xC0; // sp <= c0h
 FLAGS = 0x00; // clear flags
  STOPCON = 0x00;     // disable STOP instruction 
 
  P0CONH  = 0xAA;                      
  P0CONL  = 0xAF;    // P0.0-P0.1 A/D input, P0.2-P0.7 push-pull output              
  P1CON   = 0x0A;     // P1.0-P1.1 push-pull output
  P2CONH  = 0x4A;     //
  P2CONL  = 0xAA;    // P2.0-P2.6 push-pull output
    
  T0DATA  = 0x03;     //3,200,000/256*3=4166, 250us
  T0CON   = 0x0A;     //
}

void delay(void)   
{
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();  
}

 

void MOV ingData(void)
{
 unsigned char i,j; 
 for(i=0;i<7;i++)
 {
  for(j=0;j<4;j++)
  {
   VolData[i][j]=VolData[i][j+1];   
  } 
 }
}


void  AD_CONV(void)

 unsigned char i;
 unsigned char AD_Flag,AD_WAIT;
 for(i=0x00;i<0x07;i++)
 {
   P1=AnalogChannel[i];                 
   ADCON=ADChannel[i];                
   delay();             

       
   for(AD_WAIT=0x00;AD_WAIT<0xff;AD_WAIT++)      
            {                                      
              AD_Flag=0x00;                              
              if(ADCON&0x08)            

            
               {                             
             AD_Flag=0x01;                
             break;                           

   
               }                             
            }                        
   if(AD_Flag)                                                                               

                                                             
      VolData[i][4]=ADDATAH;                                                                
        } 
}  

void DealDelayClose(void)
{
  if(CONTROL_DelayClose)             
    {
     if(DelayCloseTime>=Interval_5M)       
        {
           CloseAllLED;                  
       CLR_RelayLight;
       CLR_RelayCyclone;
       CLR_RelayBigWind;
       CLR_RelaySilence;
       SYS_Status=0x00;             
        }
    }
}

void DealDelayLock(void)  
{
  if(CONTROL_DelayLock)              
    {
      if(DelayLockTime>=Interval_3S)
        {
         CLR_DelayLock;
         if(CONTROL_LockStatus)
           {
            CLR_LedLock;           

 
            CLR_LockStatus;                     
          }                   
         else
           {
            SET_LedLock;           

 
            SET_LockStatus;                        
          }        
        } 
    } 
}

void DealBuzz(void)  
{
  if(CONTROL_BuzzStatus)
    {
     if(BuzzTime>=BuzzInterval)
       {
        CLR_BuzzStatus;
        BuzzTime=0x00;
       }
    } 
}

void ram_init(void)                              
{
 unsigned char i;
 unsigned char *j=(unsigned char*)0x00;
 for(i=208;i!=0;i--,j++)
    *j=0;
}

__interrupt void TimeInterrupt(void)
{
   if((T0CON&0x02)&&(T0CON&0x01))
   {
      if(CONTROL_BuzzStatus)    
   {
     if(CONTROL_BuzzPulse)    
        {
       CLR_BUZOUT1;      
          CLR_BuzzPulse;
        }
     else      
        {
          SET_BUZOUT1;     
          SET_BuzzPulse;
        }      
    }
    BasicIntTime++;
   if(BasicIntTime>=BasicInterval)
     {
       BasicIntTime=0x00;                           
          KeySCANTime++;
          LockMotorTime++;
          DelayLockTime++;
          if(DelayLockTime>=Interval_3S)           
            {
             DelayLockTime=0x00;
             DelayCloseTime++;
            } 
      }
   }
   T0CON=T0CON&0xf6;                
}


void main(void)
{
 io_init();
 ram_init();
          
//  btcon = 0x02;       
 {
  MOV ingData();
        AD_CONV();
        JudgingKey();
        DealKey();
        DealDelayClose();
        DealDelayLock();
        DealBuzz();
        DealLockMotor();
 } 
}


关键字:SAMSUNG  S3C9454 引用地址:SAMSUNG S3C9454 示例程序

上一篇:几种驱动蜂鸣器的编程示例
下一篇:用MSP430F1121内置比较器设计高精度A/D变换器

推荐阅读最新更新时间:2024-03-16 15:53

ABI:Q3全球无线基础设施收入环比下降1%
来自市场研究公司ABI Research的最新研究报告显示,2012年第三季度,全球无线基础设施收入较上个季度环比下降了1%至113亿美元,较去年同期则下降10.3%。 ABI Research移动网络部门首席分析师Nick Marshall表示,诺西的RAN市场份额环比增加了4.2%至22.4%,爱立信的市场份额增至22.9%。爱立信和诺西在RAN市场分别排名第二、三位。 “三星的RAN份额增加了1.1%至5%。”Marshall表示。“三星和诺西两家公司都因LTE部署而增加了市场份额,其中,诺西的LTE收入增长了4倍。” 本季度,华为的RAN收入下滑15.2%,但该公司仍以24.3%的份额位居RAN市场的首位。阿尔卡特朗
[网络通信]
萨德入韩 三星SDI暂停西安电池厂扩建计划
  据业内人士3月20日称,由于针对美国在韩国部署萨德导弹系统的争端不断升级, 三星 SDI 已暂停在西安的电池厂增加新生产线的计划。下面就随手机便携小编一起来了解一下相关内容吧。   一位不愿透露姓名的业内人士对外媒表示,“在中国的生产线已闲置了几个月,该公司最近决定重新考虑中国工厂的扩建计划。”   作为韩国最大的电池生产商, 三星 SDI 原计划到2020年斥资6亿美元,为其在西安工厂安装更多电池生产线。   该电池制造商是在今年中国政府不允许电动汽车制造商及其供应商享受补贴、电池库存增加的前提下做出最新决定的。   少了政府慷慨的现金优惠,与采用廉价中国国产电池的汽车相比,使用 三星 SDI 电池的汽车将失去价格竞争力。
[手机便携]
晶圆最大直径可达18英寸、打入英特尔/三星/台积电供应链!
集微网消息(文/小如)2018年12月18日,江西睿宁高新技术材料(赣州)有限公司(以下简称“睿宁”)二期项目举行开工仪式。 (图片来源:中国江西网) 据中国江西网报道,睿宁已经成为中芯国际、华虹宏力、英特尔、三星、台积电、美光、京东方、华星光电等国内外知名企业供应商。睿宁二期项目总投资10.8亿元,规划建设年产10万件22纳米以下硅基及有色金属基PVD芯片薄膜电子材料研发生产基地,项目达产达标后,预计实现年销售收入100亿元,年纳税4亿元。 睿宁一期项目投资5亿元,用于22纳米以下硅基及有色金属基PVD芯片薄膜电子材料生产,一期项目于2017年4月开工,目前已经投产。 睿宁由袁永文博士创办,袁永文博士在回国创业
[手机便携]
晶圆最大直径可达18英寸、打入英特尔/<font color='red'>三星</font>/台积电供应链!
三星背后使坏?iPhone X屏幕亮度仅为Note8的一半
     大家都知道,在安卓阵营早已纷纷投入OLED显示屏的怀抱时,苹果却一直死守LCD阵营,即使苹果能够将LCD屏幕调教的非常出色,但面对OLED的先天优势也显得力不从心。此次苹果发布的三款iPhone中,iPhone X是苹果有史以来,首次采用OLED显示屏的机型,也间接证明了苹果承认OLED屏幕是未来的趋势。   据了解,iPhone X采用的OLED屏幕是由三星独家定制的屏幕,然而却并不是三星旗下最先进的OLED屏幕。据屏幕测试网站DisplayMate给出的测试结果,iPhone X上的这块屏幕最高亮度为625尼特,而三星最新的Note8屏幕最高可达1000尼特,被网站评分为A+等级。目前看来,如果不是苹果有意限制其亮
[手机便携]
三星电子否认重返汽车业或担忧核心半导体业务受损
  据外媒报道,三星电子21日通过公司内联网公告称,三星不会进军电动汽车、无人驾驶汽车市场,也没有并购整车企业的计划。   公开消息,本月初,三星电子宣布将在未来3年内新增投资180万亿韩元(约合人民币1万亿元),集中投入人工智能、5G、生物技术、汽车零部件这四大新兴产业。基于此,部分媒体和业内人士猜测,三星可能会再次试水整车市场。   为何是“再”试水?   为什么说是再次试水整车市场?也许有人不知道这段短暂的历史,据了解,三星电子的母公司三星集团事实上曾经拥有过汽车业务。   1994年,三星集团董事长李健熙成立三星汽车。他认为汽车工业是多种工业的成果集结,成立了汽车部门将有助于三星集团旗下子公司(如:三星电力、三星电子)之间
[半导体设计/制造]
<font color='red'>三星电子</font>否认重返汽车业或担忧核心半导体业务受损
三星与通用汽车合资电池工厂确定选址美国印第安纳州
6 月 14 日消息,据 Digital Times 报道,三星旗下负责电池和电子材料制造的三星 SDI 确认,其与美国通用汽车公司将新建的合资电池工厂确认选址美国印第安纳州新卡莱尔市。 三星 SDI 表示,合资工厂占地面积约 265 万平方米,相当于 390 个标准足球场大小。生产设施建成后,双方预计将创造约 1700 个工作岗位。 三星 SDI 在 4 月与通用汽车联合宣布,将投资超过 30 亿美元建立年产能超过 30GWh 的电池工厂,目标是在 2026 年实现量产。通用汽车董事长兼 CEO 玛丽・芭拉曾表示,两家公司共同打造的电池,将帮助通用把北美的电动汽车年产能增加到 100 万辆以上。 三星 SDI 此前已
[汽车电子]
<font color='red'>三星</font>与通用汽车合资电池工厂确定选址美国印第安纳州
三星确定建立“三星网络革新中心”,抢占6G市场?
5G迈入商用化后,三星电子也开始着手布下个局,韩媒《edaily》独家报道,三星电子将与延世大学合力进行6G移动通信技术的研究开发,外界期待,三星电子未来在新一代通信、系统半导体领域中创造的协同效应。 据《edaily》报道,相关业界透露,三星电子近期确定要在延世大学工科学院建立“三星网络革新中心”(SNIC),为能在上半年开设,正进行相关准备工作。SNIC将负责进行6G移动通信技术的研究。 AI、无线通信专家纷纷加入 组建梦幻团队 该报道指出,未来将由延世大学工科学院院长洪大植、电气电子工学系教授李忠勇、全球融合工学系教授蔡灿炳等教授,与三星电子的研究员组成70多人的研究团队。在人工智能领域、无线通信领域中,这样的阵容堪称是
[手机便携]
三星部分产能转向NAND闪存 公司市场份额猛增
iSuppli公司日前表示,2007年第2季度三星电子(Samsung)NAND闪存销售额达到14亿美元,比第1季度的12亿美元增长18.9%。三星在2007年上半年将部分产能从DRAM转向NAND闪存,该公司的NAND市场份额猛增至45.9%,比1季度的44.1%高几乎两个百分点。 iSuppli内存/存储系统首席分析师Nam Hyung Kim表示,“三星第2季度表现强劲主要是按容量计算增长11%,出货量增加归功于扩大苹果iPhone和iPod等消费电子市场。同时,东芝(Toshiba)由于处于56纳米工艺迁移初期,按容量计算仅增长2%。不过,iSuppli预计东芝56纳米生产工艺稳定后,出货量增长将超过30%。” 三星销
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved