历史上的今天
返回首页

历史上的今天

今天是:2024年11月10日(星期日)

正在发生

2021年11月10日 | stm8S103单片机手轮DIY

2021-11-10 来源:eefocus

stm8S103 手轮DIY 代码如下:
#include "IOSTM8S103F3.h"
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t

#define LED10  PA_ODR_ODR2
#define LED100 PA_ODR_ODR3
#define LEDX   PD_ODR_ODR4
#define LEDY   PD_ODR_ODR5
#define LEDZ   PD_ODR_ODR6
#define LEDA   PA_ODR_ODR1

#define KZ10  PD_ODR_ODR2
#define KZ100 PD_ODR_ODR3
#define KZX   PC_ODR_ODR4
#define KZY   PC_ODR_ODR5
#define KZZ   PC_ODR_ODR6
#define KZA   PC_ODR_ODR7

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;

u8 XYZA=0;

void Delayms(unsigned int ms)
{
   u8 i,y;
   while(ms != 0)
   {
       for(y=0;y<100;y++)
       {
       }
       for(i=0;i<200;i++)
       {
   }
    ms--;
   }         
}



//****************io口初始化****************/
void GPIO_INIT()
{

PA_DDR = 0xFF;//
PA_CR1 = 0xFF;
PA_CR2 = 0xFF;
PA_ODR = 0xFF;

PB_DDR = 0x00;//按钮
PB_CR1 = 0x00;
PB_CR2 = 0xFF;

EXTI_CR1=0xAA;  

PC_DDR = 0xFF;//
PC_CR1 = 0xFF;
PC_CR2 = 0xFF;
PC_ODR = 0xFF;


PD_DDR = 0xFF;//
PD_CR1 = 0xFF;
PD_CR2 = 0xFF;
PD_ODR = 0xFF;
}

//*********************************主函数************************************/
main()
{   

  //Delayms(50);//稳定
  CLK_CKDIVR=0x00; //时钟不分频 16M
  Delayms(100);//稳定

  GPIO_INIT();

  KZX=0;
  LEDX=0;

  asm("rim");


  while (1)
  {
   }


}


//PB中断服务函数
#pragma vector=0x06 //PB 中断响应
__interrupt void EXTI_PORTB_IRQHandler(void) //PB 服务函数   
{
  if((PB_IDR&0x20)==0)
  {
    Delayms(100);// 消按钮抖动
    if((PB_IDR&0x20)==0)
    {
      if(LED10==1&&LED100==1) //10倍
      {
        LED10=0;
        KZ10=0;
        KZ100=1;
      }
      else
      {  
        if(LED10==0&&LED100==1)//100倍
        {  
        LED10=0;  
        LED100=0;

        KZ10=1;
        KZ100=0;

        }     
        else
          if(LED10==0&&LED100==0)//1倍
          {
            LED10=1;
            LED100=1;

            KZ10=1;
            KZ100=1;
          }
      }
  }
  while((PB_IDR&0x20)==0x20);//释放按钮
  }

  if((PB_IDR&0x10)==0)//4选1
  {
    Delayms(100);// 消按钮抖动
    if((PB_IDR&0x10)==0)
    {
     if(XYZA==0)
     {
      LEDX=0;
      LEDY=1;
      LEDZ=1;
      LEDA=1;

      KZX=0;
      KZY=1;
      KZZ=1;
      KZA=1;

     }
     if(XYZA==1)
     {
      LEDX=1;
      LEDY=0;
      LEDZ=1;
      LEDA=1;

      KZX=1;
      KZY=0;
      KZZ=1;
      KZA=1;
     }

     if(XYZA==2)
     {
      LEDX=1;
      LEDY=1;
      LEDZ=0;
      LEDA=1;

      KZX=1;
      KZY=1;
      KZZ=0;
      KZA=1;
     }
     if(XYZA==3)
     {
      LEDX=1;
      LEDY=1;
      LEDZ=1;
      LEDA=0;

      KZX=1;
      KZY=1;
      KZZ=1;
      KZA=0;


      XYZA=0;
     }
      else XYZA++;

     while((PB_IDR&0x10)==0x10);//释放按钮
     }

    }

}

推荐阅读

史海拾趣

Charcroft Electronics Ltd公司的发展小趣事

在竞争激烈的电子行业中,供应链管理是企业成功的关键之一。Charcroft Electronics Ltd公司注重优化供应链管理,通过与供应商建立长期稳定的合作关系,确保原材料的质量和供应的稳定性。同时,公司还采用先进的供应链管理技术,实现库存的精准控制和物流的高效运作,提高了运营效率和市场响应速度。

Exclara Inc公司的发展小趣事

随着技术的不断成熟和产品的日益完善,Exclara开始将目光投向全球市场。公司积极拓展海外市场,通过参加国际展会、与当地合作伙伴建立战略合作关系等方式,不断提升品牌知名度和市场份额。同时,公司也在全球范围内建立了完善的销售网络和售后服务体系,以确保客户能够享受到优质的产品和服务。

Efficient Power Conversion公司的发展小趣事

作为一家技术驱动的公司,EPC公司一直致力于持续创新和产品研发。近年来,公司不断推出新的氮化镓功率半导体器件和集成电路产品,以满足市场不断变化的需求。其中,EPC公司全新推出的ePower功率级集成电路系列,为高功率密度应用提供了更高性能及更小型化的解决方案。这一系列产品在市场上获得了良好的反响,进一步巩固了EPC公司在氮化镓技术领域的领先地位。

FOSLINK公司的发展小趣事

随着工业4.0时代的到来,FOSLINK公司积极响应智能制造的号召,投入巨资引进先进的自动化生产设备和智能管理系统。通过实施智能制造战略,FOSLINK不仅实现了生产过程的数字化、网络化和智能化,还大幅提升了生产效率和产品质量。这一变革不仅降低了公司的生产成本,还增强了其在全球市场的竞争力。FOSLINK的智能制造实践,为电子行业树立了新的标杆。

Hittite Microwave(ADI)公司的发展小趣事

FOSLINK公司自成立以来,始终将技术创新视为企业发展的核心驱动力。在早期,公司专注于研发高性能的电子元器件,如混合积体电路(IC)和单石数位积体电路(ASIC)。通过不断的技术积累和优化,FOSLINK成功推出了多款具有行业领先地位的产品,不仅满足了市场对高质量电子元器件的需求,还引领了行业的技术进步。这一系列的创新成果,使FOSLINK在电子行业中逐渐崭露头角,赢得了众多客户的信赖和好评。

C-MEDIA公司的发展小趣事

随着数字化时代的到来,C-MEDIA公司敏锐地捕捉到文化传媒市场的潜力。公司以法国主流电视台为传播平台,积极与中国主流媒体展开合作,成功开创了海外华人经营国际文化传媒的新模式。特别是在2014年,中国国务院新闻办独家授权C-MEDIA在欧洲播放中国影视数据库节目,这一举措极大地提升了公司在国际文化传媒领域的影响力。

问答坊 | AI 解惑

A3977 pdf

A3977 pdf 芯片资料…

查看全部问答>

请各位帮忙,急啊!

我在windows CE 下 用 VS2005 开发 vb.net 程序 但是好多类都不支持,比如像我现在做的文件的读写就不能用随机文件读取,但是又没办法将文件中的数据读取到变量中以前可以使用FileGet(),现在不能了,不支持,请问我要怎么办呢?…

查看全部问答>

如何从零开始一步一步制作出颜色跟踪机器人?

如何从零开始一步一步制作出颜色跟踪机器人? 要求是: 1、        制作一台简易机器人; 2、        需要有控制机器人运动的控制电路; 3、        实时采集CCD图像; 4、  ...…

查看全部问答>

如何让桌面上创建的快捷方式不掉电丢失

我知道可以通过.bib文件将快捷方式直接加进NK 然后.dat文件通过例如如下的语句,将快捷方式建立到桌面上,这样建立的快捷方式不会掉电丢失 Directory(\"\\Windows\\LOC_DESKTOP_DIR\"):-File(\"英语.lnk\",\"\\Windows\\CEnglishExp.lnk\") 不过 ...…

查看全部问答>

同比环比(案例)

由于之前没有开发到水晶报表这些东西,现在需要比较急请一条捷径…

查看全部问答>

用USB Multilink调试时出现问题

用USB Multilink调试时出现问题 提示: “Opening USB Port 1 ...MON08 MULTILINK Interface cable detected - Flash Version 2.20 Could not measure target baudrate.” 请各位前辈指教 …

查看全部问答>

TFT屏驱动芯片HX8238的驱动问题,请进来看看,多谢了!

采用的屏是比亚迪的3.5寸TFT屏,下面是TFT屏驱动芯片HX8238的资料: HX8238的时序图 HX8238的时序要求 S3C2440的LCD时序图 我的LCD控制器设置如下: CLKVAL = 6;    //因为我用的是FCLK=400MHz HCLK=100MHz PCLK=50MHz的配置 ...…

查看全部问答>

单片机的R0~R7寄存器在使用上是否区别?

我在一程序中遇到这种情况: MOV R0,#30H MOV A,@R0 程序运行正常,如果把R0换成R1,也是正常 但如果将R0换成R2~R7中任一个,编译都通不过,不知道这是什么原因…

查看全部问答>

Vishay沟槽式肖特基二极管

请列出目前Vishay沟槽式肖特基二极管(TMBS) 提供的电压等级(至少3个)。…

查看全部问答>

问下香水兄,电机套件是汇编还是C写的

                                  …

查看全部问答>