//*****************************************************   
//Copyright (c) 2021, 苏州华芯微电子股份有限公司
//All rights reserved                                 
//
//文件名称: HS16F3211-GPIO
//摘    要: HS16F3211-GPIO功能演示
//  	    PB口输入输出配置、上下拉配置及高低输出 
//
//当前版本: 1.0                                      
//作    者: 华芯微MCU组
//完成日期: 2021.09.02
//*****************************************************   

#include 	<hs16f3211.h> 


//***********************宏定义*****************************
#define  unchar     unsigned char 
#define  unint      unsigned int
#define  unlong     unsigned long
#define	CLRWDT()	asm("clrwdt")

#define  OUT1		FPB0
#define  OUT2		FPB1
#define  KEY1		FPB2  
#define  KEY2		FPB3

/*-------------------------------------------------
 *  函数名：GPIO_Init
 *  功能：  GPIO设置
 *  输入：  PB3 PB2
 *  输出：  PB0 PB1
 --------------------------------------------------*/	
void GPIO_Init(void) 
{ 

    OPTION= 0b00000010; //Bit7 INT1EDG, 外部中断1触发方式 0 INT1引脚下降沿触发
                        //Bit6 INTEDG, 外部中断 触发方式 0 INT引脚下降沿触发
                        //Bit5 T0CS, TMR0时钟源选择位 0 内部指令时钟
                        //Bit4 T0SE, TMR0时钟源边沿选择位 0 T0CKI引脚下降沿触发计数
                        //Bit3 PSA, 预分频分配位 0 预分频器分配给TMR0
                        //Bit2:0 PS[2:0], 预分频配置 010 '8分频
    
    PORTA = 0b00000000;	
    IOSTA = 0b00000000;	//PA配置输入输出 0-输出 1-输入
                        //PA口->全输出

    PORTB = 0b00000000;	
    IOSTB = 0b00001100;	//PB配置输入输出 0-输出 1-输入
                        //PB0 PB1输出，PB3 PB2输入 
			
    PHCON = 0b11111011; //上拉配置  0使能  1禁止
			//PB2开上拉

    PDCON = 0b01111111; //下拉配置  0使能  1禁止  
			//PB3开下拉
}

void WDT_Init(void) 
{  
	CLRWDT(); 	
}

//****主函数****// 
void main(void) 
{
    GPIO_Init();
    WDT_Init();  
    while(1)  
    { 
     if(KEY1==0)//PB2上拉，输入低时，OUT1输出低  输入高时，OUT1输出高
      {
		OUT1=0;          
      }
	else{
		OUT1=1; 
		}
	if(KEY2==1)//PB3下拉，输入低时，OUT2输出低  输入高时，OUT2输出高
      {
		OUT2=1;          
      }
	else{
		OUT2=0;
		}
	
	
	
    }    
}
