练习题(有答案) 下载本文

ADD A, R1 RET

ERROR:MOV A,#255 RET

6.用8051输出控制8个LED从LED1到LED8、再到LED1…,每次一个LED发光,并不断循环。一个开关控制引起中断,电平触发,中断后8个LED一起闪5下,然后恢复前面的循环。画出连接示意图,写出完整的程序。(软件延时用循环5*126*200次控制)(共10分)

delay() { unsigned char i,j,k for(i=0;i<5;i++) for(j=0;j<126;j++) for(k=0;k<200;k++) }

unsigned char dat[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void main(void) {

while(1) {

P1=dat[i++]; i= i&0x07; delay(); } }

sbit P21=P2^1;

void int0_isr() interrupt 0

{ unsigned char i,j; P2=0xff; if(P21==0) {

for(j=0;j<5;i++) {

P1=0xff; delay(); p1=0X0; delay(); } } }