历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2018年01月29日 | SAMSUNG S3C9454 示例程序

2018-01-29 来源:eefocus

//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();
 } 
}


推荐阅读

史海拾趣

Big-Sun Electronics Co Ltd公司的发展小趣事

品质是Big-Sun Electronics Co Ltd公司一直以来的核心竞争力。公司建立了严格的质量管理体系,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把关。同时,Big-Sun还注重品牌建设,通过广告宣传和客户服务,不断提升品牌知名度和美誉度。

Altus Technology Inc公司的发展小趣事

Altus深知人才是企业发展的根本。因此,公司一直注重人才培养和引进工作。通过建立完善的培训体系和激励机制,Altus吸引了大量优秀人才加入公司,并为他们提供了广阔的发展空间和职业晋升机会。这些人才在公司的各个岗位上发挥着重要作用,推动了公司的技术创新和市场拓展。同时,Altus还注重员工的福利待遇和文化建设,营造了积极向上、团结和谐的工作氛围。

Avic公司的发展小趣事

随着中国航空工业的快速发展,Avic公司不断加强在航空电子技术领域的研发和创新。公司成功研制出一系列先进的航空电子系统,这些系统不仅提高了飞机的性能和安全性,也为中国航空工业的国际竞争力奠定了坚实基础。Avic公司在航空电子领域的突破,不仅推动了国内航空工业的发展,也为国际航空市场带来了新的选择。

GE Power Electronics Inc公司的发展小趣事
作为家居装饰品的一部分,如声控音乐盒、声控台灯等,通过声音控制实现特定的功能或效果。
Aleph America Corporation公司的发展小趣事
作为儿童玩具的一部分,通过声音控制播放音乐,增加玩具的趣味性和互动性。
Babcock Inc公司的发展小趣事

Babcock深知技术创新是公司发展的核心动力。因此,公司始终保持着对技术研发的持续投入。通过不断引进先进设备、优化研发流程、加强团队建设等措施,Babcock的技术实力得到了不断提升。同时,公司还注重与高校和研究机构的合作,共同推动电子技术的创新发展。

问答坊 | AI 解惑

教你做端口映射

(Port Mapping): 如果你是ADSL、MODEM或光纤等宽带接入用户,想在公司或单位内部建一个服务器或WEB站点,并且想让互联网上的用户访问你的服务器,那么你就会遇到端口映射问题。 通常情况下,路由器都有防火墙功能,互联网用户只能访问到你的 ...…

查看全部问答>

请问哪家的NOR FLASH速度最快?

请问哪家的NOR FLASH速度最快? 请大家讨论…

查看全部问答>

串口发送问题。100分,在另一个帖子。

evc写的,详见:(100分) http://topic.eeworld.net/u/20080313/13/25419c0c-4a83-44c1-b971-1c1e28fabc91.html…

查看全部问答>

LM3SLib_SSI

 LM3SLib_SSI   SSI兼容SPI…

查看全部问答>

TI杯09年D题 单相正弦波变频电源

那位有TI杯09年D题  单相正弦波变频电源   的相关资料吗??      还有这个能用L298达到要求吗 谢谢了。。。…

查看全部问答>

发现我团购的板子已发货了

小小的高兴一下,在eeworld团购的msp430开发板已经发货了。非常感谢活动组织者,也希望各位拿到板子的童鞋一起好好利用!呵呵…

查看全部问答>

讨论RampGenerator模块

    Ramp Generator相关的资料看了有几天了,但还是没有彻彻底底的弄明白,希望和大家一起讨论讨论,来进一步理解和学习。 资料中有关公式的表述如下: u(k) = gain(k) * angle(k) + offset(k) if u(k) > 1 then u(k) ...…

查看全部问答>

LED 驱动器

本帖最后由 dontium 于 2015-1-23 13:13 编辑     LED 驱动器   并行输出提供高电流输出 LED 驱动器注意事项 想获取更多资料,快下载附件吧~ …

查看全部问答>

多个电平的数字地和模拟地接在一起的问题

想请问大家,一个系统包括多个电平的数字地和模拟地,如果把这些地都接在一起会出现什么情况?…

查看全部问答>

单片机到共阴极LED七段数码管的显示

朋友要做毕业论文。因为我帮助他查资料,所以请大家帮帮我们,看我们需要在那些方面着手,查那些资料,给一些头绪。我们只负责做  “由单片机到共阴极LED七段数码管的显示”   ,其余那些是课题需求。谢谢了!以下两张图片是概 ...…

查看全部问答>