当前位置:首页 > 单片机 > 单片机
[导读] ;主程序显示八位流水灯;;外部中断0:左右四位闪烁三次;;外部中断1:各位间隔闪烁三次。;仿真电路如下:;图片链接:http://xiangce.baidu.com/picture/detail/f07000d4ddcb74074c5fd14ae100a41f08316f

;主程序显示八位流水灯;

;外部中断0:左右四位闪烁三次;

;外部中断1:各位间隔闪烁三次。


;仿真电路如下:

;图片链接:http://xiangce.baidu.com/picture/detail/f07000d4ddcb74074c5fd14ae100a41f08316fdd


;程序如下:


ORG 0000H

LJMP START

ORG 0003H

LJMP X0_INT

ORG 0013H

LJMP X1_INT

ORG 0030H

START:

SETB IT0

SETB IT1

SETB EX0

SETB EX1

SETB EA

MOV SP, #50H

;----------------------

MOV A, #0FEH

LOOP:

MOV P1, A

CALL DELAY

RL A

SJMP LOOP

;----------------------

X0_INT:

PUSH ACC

PUSH PSW

SETB RS0

MOV A, #0F0H ;高低四位分别发光

MOV R2, #6

X0_1:

MOV P1, A

CALL DELAY

CPL A

DJNZ R2, X0_1

POP PSW

POP ACC

RETI

;----------------------

X1_INT:

PUSH ACC

PUSH PSW

SETB RS1

MOV A, #0AAH ;八位LED间隔发光

MOV R2, #6

X1_1:

MOV P1, A

CALL DELAY

CPL A

DJNZ R2, X1_1

POP PSW

POP ACC

RETI

;----------------------

DELAY:

MOV R5, #3

DJNZ R7, $

DJNZ R6, $ - 2

DJNZ R5, $ - 4

RET

;----------------------

END



;编写本程序的目的,是为了解答一个题目。


;这个题目给出了 C 程序,希望给出同样功能的汇编程序。


;C 程序原文如下:


#include51.h>

#include

void IRS0_init();

void IRS1_init();

void delay_ms(unsigned int n);

void main()

{

unsigned char temp = 0xfe;

IRS0_init();

IRS1_init();

while(1) {

P1 = temp; delay_ms(300);

temp=_crol_(temp, 1);

}

}

void IRS0_init()

{

IT0 = 1;

EX0 = 1;

EA = 1;

}

void IRS1_init()

{

IT1 = 1;

EX1 = 1;

}

void IRS0()interrupt 0

{

unsigned char temp = 0xf0;

unsigned char num;

for(num = 6; num > 0; num--) {

P1 = temp; delay_ms(300);

temp = ~temp;

}

}

void IRS1()interrupt 2

{

unsigned char temp = 0xaa;

unsigned char num;

for(num = 6; num > 0; num--) {

P1 = temp; delay_ms(300);

temp = ~temp;

}

}

void delay_ms(unsigned int n)

{

unsigned int x, y;

for(x = n; x > 0; x--) for(y = 123; y > 0; y--);

}


;这个 C 程序,其实,还有不足,如中断嵌套、正确恢复中断前的显示等等。


;为了尊重原作,做而论道在写汇编程序时,并没有对原程序功能进行修改。


;现场的保护、恢复可以参考:


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭