这是因为51单片机的外部中断需要用到汇编语言编写的中断服务程序,而你的代码里没有正确地写入汇编语言代码。
你需要在你的代码中添加中断服务程序的汇编语言代码。具体的操作步骤是:
1. 在你的代码里定义中断服务程序所需的中断向量地址。
2. 编写汇编语言中断服务程序。
3. 在你的C程序中调用汇编语言中断服务程序。
下面是一个示例代码,可以帮助你理解如何正确地编写一个51单片机的外部中断程序:
#include <reg51.h>
// 定义中断向量地址
#define EXT0_VECT_ADDR 0x03
// 编写汇编语言的中断服务程序
__asm void EXT0_ISR (void)
{
// 中断服务程序的代码
RETI ;返回中断前状态
}
void main (void)
{
// 设置外部中断0
EX0 = 1 ; // 使能外部中断INT0
IT0 = 1 ; // 设置为下降沿触发方式
// 安装中断服务程序
EA = 1 ; // 使能全局中断
EX0 = 1 ; // 使能外部中断INT0
IT0 = 1 ; // 设置为下降沿触发方式
AUXR |= 0x0C ; // 使用高优先级中断
ET