泸州市建设职工培训中心网站,怎么在电脑上做网站,网站建设哪家不错,怎么用ip访问vps网站STC32单片机 普通 I/O 口中断功能和使用✨STC32单片机普通 I/O 口中断#xff0c;不是传统外部中断. #x1f516;手册上描述#xff1a;STC32G 系列支持所有的 I/O 中断#xff0c;且支持 4 种中断模式#xff1a;下降沿中断、上升沿中断、低电平中断、高电平中断。每组 …STC32单片机 普通 I/O 口中断功能和使用 ✨STC32单片机普通 I/O 口中断不是传统外部中断. 手册上描述STC32G 系列支持所有的 I/O 中断且支持 4 种中断模式下降沿中断、上升沿中断、低电平中断、高电平中断。每组 I/O 口都有独立的中断入口地址且每个 I/O 可独立设置中断模式。 注STC32G12K128-Beta 版芯片的普通 I/O 口下降沿中断和上升沿中断暂时不要使用 由于手上只有STC32G12K128-Beta版本的实际测试了低电平 I/O 口中断是有效的在配置成高电平中断代码模式下也只能通过低电平才能响应中断在引脚引入高电平3.3V或5V都没有反映。其他两种触发模式未作验证。 I/O 口中断相关寄存器 端口中断使能寄存器PxINTE PnINTE.x端口中断使能控制位n07x07 0关闭 Pn.x 口中断功能 1使能 Pn.x 口中断功能
端口中断标志寄存器PxINTF PnINTF.x端口中断请求标志位n0~ 7x0~7 0Pn.x 口没有中断请求 1Pn.x 口有中断请求若使能中断则会进入中断服务程序。标志位需软件清 0。
端口中断模式配置寄存器PxIM0PxIM1 配置端口的模式
✅端口中断优先级控制寄存器PINIPLPINIPH PxIPH,PxIPPx口中断优先级控制位 00Px 口中断优先级为 0 级最低级 01Px 口中断优先级为 1 级较低级 10Px 口中断优先级为 2 级较高级 11Px 口中断优先级为 3 级最高级
端口中断掉电唤醒使能寄存器PxWKUE PnxWKUE端口中断掉电唤醒使能控制位n07x07 0关闭 Pn.x 口中断掉电唤醒功能 1使能 Pn.x 口中断掉电唤醒功能工程说明 通用中断跳转汇编文件代码 ⚡根据选择不同端口中断对应的入口地址不同注意修改。
// ISR.ASM
//将下面的代码保存为 ISR.ASM然后将文件加入到项目中即可
//CSEG AT 0143H ;P3 口中断入口地址
//CSEG AT 013BH ;P2 口中断入口地址
//CSEG AT 0133H ;P1 口中断入口地址
//CSEG AT 012BH ;P0 口中断入口地址
CSEG AT 013BH ;P2 口中断入口地址
JMP P0INT_ISR
P0INT_ISR:
JMP 006BH ;借用 13 号中断的入口地址
ENDP0口下降沿中断示例
/*
P0 口下降沿中断
注STC32G12K128-Beta 版芯片的普通 I/O 口下降沿中断和上升沿中断暂时不要使用
//测试工作频率为 11.0592MHz
*///#include stc8h.h
#include stc32g.h //头文件见下载软件
#include intrins.h
void main()
{EAXFR 1; //使能访问 XFRCKCON 0x00; //设置外部数据总线速度为最快WTST 0x00; //设置程序代码等待参数
//赋值为 0 可将 CPU 执行程序的速度设置为最快P0M0 0x00;P0M1 0x00;P1M0 0x00;P1M1 0x00;P2M0 0x00;P2M1 0x00;P3M0 0x00;P3M1 0x00;P4M0 0x00;P4M1 0x00;P5M0 0x00;P5M1 0x00;P0IM0 0x00; //下降沿中断P0IM1 0x00;P0INTE 0xff; //使能 P0 口中断EA 1;while (1);
}
//由于中断向量大于 31在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{unsigned char intf;intf P0INTF;if (intf){P0INTF 0x00;if (intf 0x01){
//P0.0 口中断}if (intf 0x02){
//P0.1 口中断}if (intf 0x04){
//P0.2 口中断}if (intf 0x08){
//P0.3 口中断}if (intf 0x10){
//P0.4 口中断}if (intf 0x20){
//P0.5 口中断}if (intf 0x40){
//P0.6 口中断}if (intf 0x80){
//P0.7 口中断}}
}P1 口上升沿中断示例代码
/*P1 口上升沿中断
注STC32G12K128-Beta 版芯片的普通 I/O 口下降沿中断和上升沿中断暂时不要使用
//测试工作频率为 11.0592MHz
*/
#include stc32g.h //头文件见下载软件
#include intrins.h
void main()
{EAXFR 1; //使能访问 XFRCKCON 0x00; //设置外部数据总线速度为最快WTST 0x00; //设置程序代码等待参数
//赋值为 0 可将 CPU 执行程序的速度设置为最快P0M0 0x00;P0M1 0x00;P1M0 0x00;P1M1 0x00;P2M0 0x00;P2M1 0x00;P3M0 0x00;P3M1 0x00;P4M0 0x00;P4M1 0x00;P5M0 0x00;P5M1 0x00;P1IM0 0xff; //上升沿中断P1IM1 0x00;P1INTE 0xff; //使能 P1 口中断EA 1;while (1);
}
//由于中断向量大于 31在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{unsigned char intf;intf P1INTF;if (intf){P1INTF 0x00;if (intf 0x01){
//P1.0 口中断}if (intf 0x02){
//P1.1 口中断}if (intf 0x04){
//P1.2 口中断}if (intf 0x08){
//P1.3 口中断}if (intf 0x10){
//P1.4 口中断}if (intf 0x20){
//P1.5 口中断}if (intf 0x40){
//P1.6 口中断}if (intf 0x80){
//P1.7 口中断}}
}P2 口低电平中断示例代码
/*P2 口低电平中断注STC32G12K128-Beta 版芯片的普通 I/O 口下降沿中断和上升沿中断暂时不要使用
//测试工作频率为 11.0592MHz
*/#include stc32g.h //头文件见下载软件
#include intrins.h
void main()
{EAXFR 1; //使能访问 XFRCKCON 0x00; //设置外部数据总线速度为最快WTST 0x00; //设置程序代码等待参数//赋值为 0 可将 CPU 执行程序的速度设置为最快P0M0 0x00;P0M1 0x00;P1M0 0x00;P1M1 0x00;P2M0 0x00;P2M1 0x00;P3M0 0x00;P3M1 0x00;P4M0 0x00;P4M1 0x00;P5M0 0x00;P5M1 0x00;P2IM0 0x00; //低电平中断P2IM1 0xff;P2INTE 0xff; //使能 P2 口中断EA 1;while (1);
}//由于中断向量大于 31在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{unsigned char intf;intf P2INTF;if (intf){P2INTF 0x00;if (intf 0x01){
//P2.0 口中断}if (intf 0x02){
//P2.1 口中断}if (intf 0x04){
//P2.2 口中断}if (intf 0x08){
//P0.3 口中断}if (intf 0x10){
//P2.4 口中断}if (intf 0x20){
//P2.5 口中断}if (intf 0x40){
//P2.6 口中断}if (intf 0x80){
//P2.7 口中断}}
}
P3 口高电平中断示例代码
/*P3 口高电平中断注STC32G12K128-Beta 版芯片的普通 I/O 口下降沿中断和上升沿中断暂时不要使用
//测试工作频率为 11.0592MHz
*/
#include stc32g.h //头文件见下载软件
#include intrins.h
void main()
{EAXFR 1; //使能访问 XFRCKCON 0x00; //设置外部数据总线速度为最快WTST 0x00; //设置程序代码等待参数//赋值为 0 可将 CPU 执行程序的速度设置为最快P0M0 0x00;P0M1 0x00;P1M0 0x00;P1M1 0x00;P2M0 0x00;P2M1 0x00;P3M0 0x00;P3M1 0x00;P4M0 0x00;P4M1 0x00;P5M0 0x00;P5M1 0x00;P3IM0 0xff; //高电平中断P3IM1 0xff;P3INTE 0xff; //使能 P3 口中断EA 1;while (1);
}
//由于中断向量大于 31在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{unsigned char intf;intf P3INTF;if (intf){P3INTF 0x00;if (intf 0x01){
//P3.0 口中断}if (intf 0x02){
//P3.1 口中断}if (intf 0x04){
//P3.2 口中断}if (intf 0x08){
//P3.3 口中断}if (intf 0x10){
//P3.4 口中断}if (intf 0x20){
//P3.5 口中断}if (intf 0x40){
//P3.6 口中断}if (intf 0x80){
//P3.7 口中断}}
}
工程源码 注意根据选择不同的端口在ISR.ASM文件中修改对应的中断入口地址。 复制这段内容后打开百度网盘手机App操作更方便哦
链接: https://pan.baidu.com/s/118gpVK1m1OFgwMyP7Xi6bA
提取码: wv2r