请看清楚,是汇编语言的,不是C语言
要实现以下:
8个LED灯按照16进制加一方式点亮
P1口的8个引脚分别连接8个LED灯
P3.3,即INT1,外部中断1申请引脚连接一个按钮K1,用按钮控制电路
使K1每拨动一次,加一,
最初是00000000B ,对应8个LED,全灭
+1,变成00000001B,只有最后一个灯亮
+1,00000010B,只有倒数第二个灯亮
+1,00000011B,最后两个灯亮....
用汇编语言怎么实现,不会写中断程序!
ORG 00H
AJMP MAIN
ORG 13H
AJMP EX1INT
ORG 0030H
MAIN:
MOV P1,#0
SETB EA
SETB EX1
SETB IT1
MAIN1:
MOV P1,A
AJMP MAIN1
EX1INT:
INC A
CJNE A,#0,RTI
MOV A,#0
RTI:
RETI
END
追问这个是不是没有延时?
追答没要求延时吧
我们这个实验是外部中断实验,我就是不会写中断。。另外我貌似搞错了,这个灯控制应该是用+1还是-1?麻烦帮我看看,谢谢
我有用了外部中断
外部中断你就是初始化一下,开总中断SETB EA(),开外部中断1(SETB EX1),下降沿触发(SETB IT1)就可以了。然后在中断子程序里写上中断时需要的东西。
加1还是减1,看你的图怎么画了。你自己试试。
你的这个仿真图,P3.3的上拉电阻不知为什么是0R1,你改成10K,或去掉,我上面的程序就可以仿真了。
额,这几个R7明显有问题吧,延时么。。。。
追答呵呵,明显没有问题。
是延时。
每行,DJNZ R7, $,循环256遍,延时512us。
好吧,今天做实验,但是无需延时,你这个才是对的,但是分已经给别人了,对不住啊哥们
追答分,不算什么,没有关系的。
谢谢你的回复。