- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-12-28 14:12:38
已绑定手机
新手上路
- 积分
- 17
|
发表于 2025-12-28 15:46:24
|
显示全部楼层
这样可以吗,需要简化到单个.c能运行吗
#include "STC8Hxxx.h"
void TouchKey_Init(void)
{
P_SW2 = 0x80; // 允许访问扩展寄存器
// 1. 通道使能
TSCHEN1 = 0x00; // 关闭0-7通道
TSCHEN2 = 0x78; // 使能TK11~14 (0111 1000) → 4个通道
// 2. 其他基础配置
TSRT = 0x00; // LED扫描关闭
TSWUTC = 0x00; // 唤醒功能关闭
// 3. 核心周期配置
TSCFG1 =(1<<4) + 4;
TSCFG2 = 1;
TSCTRL |= 0x80;
// 4. 开启中断
IE2 |= 0x80; // 开启触摸中断
}
// 系统初始化函数
void System_Init(void)
{
P_SW2 = 0x80; // 允许访问扩展寄存器
// // 初始化时钟
CLKSEL = 0x00; // 先切换到内部IRC
XOSCCR = 0xc0; // 启动外部晶振
while(!(XOSCCR & 1)); // 等待外部晶振稳定
CLKDIV = 0x00; // 时钟分频
CLKSEL = 0x01; // 切换到外部晶振
delay_ms(5);
TouchKey_Init();
// 初始化外设
//P1M1 = 1111,1111B
//P1M0 = 0000,0000B
//P1.7 高阻,P1.6 高阻
P1M0 &= ~0x03;
//此时 P1.7 / P1.6 是啥工作模式 ?
P1M1 &= ~0x03;
//此时 P1.7 / P1.6 是啥工作模式 ?
P11=1;
P10=1;
Uart2_Init();
Uart1_Init();
Timer0_Init();
P3M0 &= ~0x80; P3M1 &= ~0x80;
// P3M0 &= ~0x80; P3M1 |= 0x80;
P1M0 &= ~0x10; P1M1 &= ~0x10;
keys_init();
TM1621D_init();
WS2812_Init();
//后续把晶振修改放到这后可正常运行,删掉了些不相关的代码
EA = 1; // 总中断使能
power_on = 1;
delay_ms(5);
}
void main()
{
// 系统初始化
System_Init();
// 初始状态
while(1)
{
}
}
void TKSU_Interrupt(void) interrupt 35
{
//
u8 status ;
u8 channel;
status = TSSTA2;
if(status & 0x40) // 数据溢出
{
TSSTA2 |= 0x40; // 写1清零
}
//
if(status & 0x80) // 扫描完成
{
channel = status & 0x0f;
TSSTA2 |= 0x80; // 写1清零
if(channel >= 11 && channel <= 14)
{
TK_cnt[channel] = TSDAT;
}
}
}
|
|