单片机IT1代码改用IT0

单片机IT1代码改用IT0,第1张

此函数为外部中断1函数 ,函数名为it0(),interrupt后接中断号,0 代表外部中断1,1 代表定时器中断0,2 代表外部中断2,3代表定时器中断1,4 代表串口中断。using后接寄存器号 这个不需要了解,如果你不知道用哪个寄存器,直接把中断函数写为 void it0(void) intettupt 0 即可 ,单片机会自动选择空闲寄存器的。

INT0/1为1下降沿触发 为0电平触发 ,而下降沿触发IE0和IE1可以自动清零,而电平触发得人为把IE0和IE1清零,要不然会一直启动中断。IE0/1可以自动清零,所以一般用下降沿触发

下面是修改的代码。你注意注释部分:

ORG 0000H

JMP START

ORG 13H //这里要改,因为it0和it1的中断向量表地址不同,这个地方要

//看你的单片机类型,51的话,就不是13这数值,你看看你的

//it0的中断起始地址应该是什么,把13H改了。

JMP INT_0 //改为INT_0

START: MOV IE,#10000100B //IE也需要改,设置中断控制寄存器:

//改为MOV IE,#01001000B

MOV SP,#30H

SETB IT1 //这里要改为SETB IT0

MOV A,#01010101B

LOOP: MOV P0,A

CALL DELAY

CPL A

JMP LOOP

INT_0: PUSH PSW

PUSH ACC

SETB RS0

MOV R0,#3

INT_LOOP:MOV A,#0FEH

MOV R1,#7

INT_LOOPL:MOV P0,A

CALL DELAY

RL A

DJNZ R1,INT_LOOPL

MOV R1,#7

INT_LOOPR:MOV P0,A

CALL DELAY

RR A

DJNZ R1,INT_LOOPR

DJNZ R0,INT_LOOP

POP ACC

POP PSW

RETI

DELAY: MOV R7,#200

D1: MOV R6,#250

DJNZ R6,$

DJNZ R7,D1

RET

END

需要改的就这几个地方,希望你看看。因为你没有具体的限制是什么类型的单片机,这样的话,指令和中断地址就不能非常具体的给你改。你结合我的提示,改改吧。

以上就是关于单片机 c 语言 实现中断中void it0(void) interrupt 0 using 1 后面买的interrupt 0 using 1什么意思全部的内容,包括:单片机 c 语言 实现中断中void it0(void) interrupt 0 using 1 后面买的interrupt 0 using 1什么意思、单片机实验 按钮触发外部中断 以下程序中为什么IT0和IT1为1即为什么是负跳变而不是低电平触发、单片机IT1代码改用IT0等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/8883678.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存