手册



代码
#define _MAIN_C
#include "config.h"
#include "STC8G_H_GPIO.h"
#include "main.h"
#define D1 P03
#define D2 P02
#define D3 P01
#define D4 P00
#define KEY1 P36
#define KEY2 P37
#define K P44
/**
* GPIO口初始化
*/
void GPIO_config(void)
{
P0_MODE_IO_PU(GPIO_Pin_0); // P0.0为准双向口
P0_MODE_IO_PU(GPIO_Pin_1); // P0.1为准双向口
P3_MODE_IO_PU(GPIO_Pin_2); // P3.2为准双向口
P3_MODE_IO_PU(GPIO_Pin_3); // P3.3为准双向口
P_SW2 &= 0x80; // 将EAXFR位置1,以访问在XDATA区域的扩展SFR
P3_PULL_UP_ENABLE(GPIO_Pin_2); // 使能P3.2端口内部的4.1K上拉电阻
P3_PULL_UP_ENABLE(GPIO_Pin_3); // 使能P3.3端口内部的4.1K上拉电阻
P_SW2 &= 0x7F; // 禁止访问XFR
}
/**
* 外部中断0初始化
*/
void INT0_Init()
{
IE0 = 0; // 将INT0中断请求标志位清零
EX0 = 1;
IT0 = 1; // 使能INT0下降沿中断
// IT0 = 0; // 使能INT0上升沿河下降沿中断
IPH &= 0xFE; // 将INT0优先级设置为最低优先级
IP &= 0xFE;
}
/**
* 外部中断1初始化
*/
void INT1_Init()
{
IE1 = 0; // 将INT1中断请求标志位清零
EX1 = 1;
IT1 = 1; // 使能INT1下降沿中断
// IT1 = 0; // 使能INT1上升沿河下降沿中断
IPH |= 0x04; // 将INT1优先级设置为最高优先级
IP |= 0x04;
}
void main()
{
GPIO_config();
INT0_Init();
INT1_Init();
EA = 1;
while (1)
{
;
}
}
void INT0_Isr() interrupt 0
{
D4 = ~D4;
}
void INT1_Isr() interrupt 2
{
D3 = ~D3;
}