找回密码
 立即注册
查看: 960|回复: 15

请大神指教STC8H8K64U外部中断0、1正常,2、3、4不能触发,愁死了!

[复制链接]
已绑定手机

1

主题

8

回帖

165

积分

注册会员

积分
165
发表于 2025-12-11 15:26:00 | 显示全部楼层 |阅读模式
                                         P_SW2      DATA    0BAH         ;定义外设端口切换寄存器1,复位值nnxx,000x
                                         P_SW1      DATA    0A2H         ;定义外设端口切换寄存器2,复位值0x00,0000
                                         P4         DATA    0C0H         ;定义P4,传统51单片机到P3
                                         P5         DATA    0C8H         ;定义P5         
                                         P0M0       DATA    094H
                                         P0M1       DATA    093H         
                                         P1M0       DATA    092H
                                         P1M1       DATA    091H         
                                         P2M0       DATA    096H         
                                         P2M1       DATA    095H         
                                         P3M0       DATA    0B2H         
                                         P3M1       DATA    0B1H       
                                         P4M0       DATA    0B4H         ;本程序验证:将串口挪至P1.6 P1.7;5个外部中断全用起来;验证其正确性。
                                         P4M1       DATA    0B3H         ;开始:1、无限循环点亮7个灯P0.0--P1.0--P2.0--P3.4(P3.0,P3.1仿真用)--P4.1(无P4.0)--P5.4--P4.5
                                        P5M0       DATA    0CAH         ;         亮1s灭1s.
                                         P5M1       DATA    0C9H     ;      2、按P3.2(INT0发生)P0.0点亮5s; 按P3.3(INT1发生)P1.0点亮5s; 按P3.6(INT2发生)P2.0点亮5s;
                                        P6M0       DATA    0CCH         ;         按P3.7(INT3发生)P3.4点亮5s; 按P3.0(INT4发生)P4.1点亮5s;
                                         P6M1       DATA    0CBH     ;
                                         P7M0       DATA    0E2H         ;      注:I/O口用于点灯,设为准双向口即可;I/O口用于外部中断,须设为准双向口,因为此时可以被
                                         P7M1       DATA    0E1H         ;          外部容易的拉为低电平。
                                                                                ;          P0,P1,P2,P3,P4,P5,P6,P7均可位寻址,复位值全为FFH
                                                                                                 ;
                                                                                                 ;
                                         INTCLKO                DATA    8FH      ;定义INT2,3,4的允许中断寄存器
                                          ;EX2       EQU     10H      ;INTCLKO不能位赋值,只能整体赋值,如果只使用某1个中断,可把某项单独赋值给寄存器
                                          ;EX3       EQU     20H
                                          ;EX4       EQU     40H
                                        ;AUXINTIF            DATA    0EFH      ;不触发,加上此句也无用
                                                  
                                         ORG         0000H           ;
                                         LJMP        START           ;
                                         ORG         0003H
                                         LJMP        INT_0         
                                         ORG         0013H
                                         LJMP        INT_1
                                         ORG         0053H
                                         LJMP        INT_2
                                         ORG         005BH
                                         LJMP        INT_3
                                         ORG         0083H
                                         LJMP        INT_4
                                         
                                         ORG         0030H            ;首先设置I/O口
                 START:                 MOV        SP,#5FH                  ;设置栈底地址
                                         ORL        P_SW2,#80H        ;使能访问XFR(放在扩展RAM中的特殊功能寄存器,与SFR对应)
                                         ORL        P_SW1,#80H        ;串口1配置在P1.6,P1.7
                                         MOV        P0M1,#00H         ;配置P0为准双向口
                                         MOV        P0M0,#00H
                                         MOV        P1M1,#00H         ;配置P1为准双向口,因高电平时截止,不必推挽输出
                                         MOV        P1M0,#00H       
                                         MOV        P2M1,#00H         ;配置P2为准双向口
                                         MOV        P2M0,#00H
                                         MOV        P3M1,#00H         ;配置P3为准双向口
                                         MOV        P3M0,#00H
                                         MOV        P4M1,#00H         ;配置P4为准双向口
                                         MOV        P4M0,#00H
                                         MOV        P5M1,#00H         ;配置P5为准双向口
                                         MOV        P5M0,#00H
                                         SETB       EX0               ;开INT0  ,在IE中
                                         SETB       EX1               ;开INT1
                                         SETB       EA                ;开总中断  在IE中,
                                         MOV        INTCLKO,#70H      ;开中断2,3,4;因只有下降沿中断方式,不用重申
                                         ;MOV        AUXINTIF,#00H    ;加上此句也无用
                                       
                                         SETB       IT0               ;使能INT0下降沿中断  ,在TCON中
                                         SETB       IT1               ;使能INT1下降沿中断

                        MAIN1:     CLR         P0.0              ;点亮P0,0
                                        ACALL       DELAY            ;调用延时1s子程序
                                         SETB        P0.0              ;熄灭P0,0
                                         CLR         P1.0              ;点亮P1,0
                                       ACALL       DELAY            ;调用延时1s子程序
                                         SETB        P1.0              ;熄灭P1,0
                                         CLR         P2.0              ;点亮P2,0
                                       ACALL       DELAY            ;调用延时1s子程序
                                         SETB        P2.0              ;熄灭P2,0
                                         CLR         P3.4              ;点亮P3,1
                                         ACALL       DELAY            ;调用延时1s子程序
                                         SETB        P3.4              ;熄灭P3,1
                                          CLR         P4.1
                                         ACALL       DELAY            ;调用延时1s子程序
                                         SETB        P4.1              ;熄灭P4,1
                                         CLR         P5.4              ;点亮P5,4
                                         ACALL       DELAY            ;调用延时1s子程序
                                         SETB        P5.4              ;熄灭P5,4
                                         CLR         P4.5              ;点亮P4,5
                                        ACALL       DELAY            ;调用延时1s子程序
                                         SETB        P4.5              ;熄灭P4,5
                                         SJMP        MAIN1            ;返回继续显示后面各灯
                                         
                             INT_0:         MOV         P0,#0FFH
                                         MOV         P1,#0FFH
                                         MOV         P2,#0FFH
                                         MOV         P3,#0FFH
                                         MOV         P4,#0FFH
                                         MOV         P5,#0FFH         ;全灭
                                         CLR         P0.0              ;只点亮P0.0
                                        ACALL       DELAY5           ;调用延时5s子程序
                                         SETB        P0.0              ;熄灭P0.0
                                         RETI
                                         
                      INT_1:         MOV         P0,#0FFH
                                         MOV         P1,#0FFH
                                         MOV         P2,#0FFH
                                         MOV         P3,#0FFH
                                         MOV         P4,#0FFH
                                         MOV         P5,#0FFH         ;全灭
                                         CLR         P1.0              ;只点亮P1.0
                                        ACALL       DELAY5           ;调用延时5s子程序
                                         SETB        P1.0              ;熄灭P1.0
                                         RETI       
                                         
                             INT_2:          ;ANL         AUXINTIF,#0EFH                ;标志位清0   ;INT2不触发,加上此句也无用
                                            MOV         P0,#0FFH
                                        MOV         P1,#0FFH
                                         MOV         P2,#0FFH
                                         MOV         P3,#0FFH
                                         MOV         P4,#0FFH
                                         MOV         P5,#0FFH         ;全灭
                                         CLR         P2.0              ;只点亮P2.0
                                        ACALL       DELAY5           ;调用延时5s子程序
                                         SETB        P2.0              ;熄灭P2.0
                                         RETI                         
                        
                      INT_3:         ;ANL         AUXINTIF,#0DFH                ;标志位清0   ;INT2不触发,加上此句也无用
                                        MOV         P0,#0FFH
                                        MOV         P1,#0FFH
                                         MOV         P2,#0FFH
                                         MOV         P3,#0FFH
                                         MOV         P4,#0FFH
                                         MOV         P5,#0FFH         ;全灭
                                         CLR         P3.4              ;只点亮P3.4
                                        ACALL       DELAY5           ;调用延时5s子程序
                                         SETB        P3.4             ;熄灭P3.4
                                         RETI       

                      INT_4:         ;ANL         AUXINTIF,#0BFH                ;标志位清0   ;INT2不触发,加上此句也无用
                                             MOV         P0,#0FFH
                                         MOV         P1,#0FFH
                                         MOV         P2,#0FFH
                                         MOV         P3,#0FFH
                                         MOV         P4,#0FFH
                                         MOV         P5,#0FFH         ;全灭
                                         CLR         P4.1              ;只点亮P4.1
                                         ACALL       DELAY5           ;调用延时5s子程序
                                         SETB        P4.1              ;熄灭P4.1
                                         RETI

                         DELAY:     MOV         R5,#30         ;延时0.5s,因STC单片机速度快,普通单片机此设置为5s.
                              Z1:     MOV         R6,#200
                              Z2:     MOV         R7,#250
                                        DJNZ        R7,$
                                         DJNZ        R6,Z2
                                        DJNZ        R5,Z1
                                         RET
                                         
                     DELAY5:     MOV         R5,#100         ;延时2.5s
                          ZZ1:     MOV         R6,#200
                          ZZ2:     MOV         R7,#250
                                     DJNZ        R7,$
                                         DJNZ        R6,ZZ2
                                         DJNZ        R5,ZZ1
                                         RET                 
                                         
                                     END

回复

使用道具 举报 送花

已绑定手机

24

主题

701

回帖

2731

积分

金牌会员

积分
2731
发表于 2025-12-11 16:40:46 | 显示全部楼层
对着手册搞
回复

使用道具 举报 送花

33

主题

3085

回帖

7234

积分

论坛元老

积分
7234
发表于 2025-12-11 16:44:13 | 显示全部楼层
进来之前,怎么可能呢!都是能用的。

进来一看,霍,汇编大佬,告辞告辞。

硬件没问题。。大佬再检查检查软件把
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

165

积分

注册会员

积分
165
 楼主| 发表于 2025-12-11 16:55:19 | 显示全部楼层

谢谢,但手册里面就是开启总中断和分中断,中断标志是自动清0,我就算程序里面清0也没有用,而且INT0 、INT1是正常的
回复

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

165

积分

注册会员

积分
165
 楼主| 发表于 2025-12-11 17:05:19 | 显示全部楼层
gao*** 发表于 2025-12-11 16:55
谢谢,但手册里面就是开启总中断和分中断,中断标志是自动清0,我就算程序里面清0也没有用,而且INT0 、I ...

  SETB       EA                ;开总中断  在IE中,
  MOV        INTCLKO,#70H      ;开中断2,3,4
就是这两句
回复

使用道具 举报 送花

已绑定手机

24

主题

701

回帖

2731

积分

金牌会员

积分
2731
发表于 2025-12-11 17:07:21 | 显示全部楼层
gao*** 发表于 2025-12-11 16:55
谢谢,但手册里面就是开启总中断和分中断,中断标志是自动清0,我就算程序里面清0也没有用,而且INT0 、I ...

理论上开总中断和各中断即可,你这中断程序基本格式都错了,都没有保护与恢复寄存器
回复

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

165

积分

注册会员

积分
165
 楼主| 发表于 2025-12-12 08:23:09 | 显示全部楼层
Ayb_*** 发表于 2025-12-11 17:07
理论上开总中断和各中断即可,你这中断程序基本格式都错了,都没有保护与恢复寄存器 ...

谢谢,新手上路,问题多多,本贴的目的就是请专家指导帮助找出问题,不胜感激!
回复

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

165

积分

注册会员

积分
165
 楼主| 发表于 2025-12-12 08:50:19 | 显示全部楼层
Ayb_*** 发表于 2025-12-11 17:07
理论上开总中断和各中断即可,你这中断程序基本格式都错了,都没有保护与恢复寄存器 ...

本程序就是搭建一个简单的LED灯电路,学习STC8H8K64U单片机,验证其外部中断的设置和使用,结果一出门就碰上了问题:INT0、INT1正常,INT2、INT3、INT4不能触发,不知设置上哪里出了问题,保存现场后还是不行
回复

使用道具 举报 送花

已绑定手机

24

主题

701

回帖

2731

积分

金牌会员

积分
2731
发表于 2025-12-12 09:07:01 | 显示全部楼层
gao*** 发表于 2025-12-12 08:50
本程序就是搭建一个简单的LED灯电路,学习STC8H8K64U单片机,验证其外部中断的设置和使用,结果一出门就 ...

也许2,3,4已经中断了,你进入中断后死循环亮个灯试试,或者硬件调试一下
回复

使用道具 举报 送花

已绑定手机

24

主题

701

回帖

2731

积分

金牌会员

积分
2731
发表于 2025-12-12 09:09:14 | 显示全部楼层
gao*** 发表于 2025-12-12 08:50
本程序就是搭建一个简单的LED灯电路,学习STC8H8K64U单片机,验证其外部中断的设置和使用,结果一出门就 ...

你这里都错了
                                    ORG         0083H
                                         LJMP        INT_4
                                         
                                         ORG         0030H            ;首先设置I/O口
改为
                                    ORG         0083H
                                         LJMP        INT_4
                                         
                                         ORG         0100H            ;首先设置I/O口
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-7 12:47 , Processed in 0.075621 second(s), 84 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表