找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2776|回復(fù): 0
收起左側(cè)

stm8S103單片機(jī)手輪DIY 附源程序

[復(fù)制鏈接]
ID:304321 發(fā)表于 2021-11-5 13:02 | 顯示全部樓層 |閱讀模式
51hei圖片_20211105124619.jpg

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;
}

//*********************************主函數(shù)************************************/
main()
{   

  //Delayms(50);//穩(wěn)定
  CLK_CKDIVR=0x00; //時(shí)鐘不分頻 16M
  Delayms(100);//穩(wěn)定

  GPIO_INIT();

  KZX=0;
  LEDX=0;

  asm("rim");


  while (1)
  {
   }


}


//PB中斷服務(wù)函數(shù)
#pragma vector=0x06 //PB 中斷響應(yīng)
__interrupt void EXTI_PORTB_IRQHandler(void) //PB 服務(wù)函數(shù)   
{
  if((PB_IDR&0x20)==0)
  {
    Delayms(100);// 消按鈕抖動(dòng)
    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);// 消按鈕抖動(dòng)
    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);//釋放按鈕
     }

    }

}


評(píng)分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表