有谁可以做一下以下两道题吗?(语言-c语言)

不会,请各位做一下,写出程序来。
51单片机(C语言版)的 ヽ(゚∀゚)ノ!

img

///3
#inlude<reg51.h>
void main()
{
    char a;
    for(a = 0; a < 8; a++)
    {
        P1 = 1 << a;
    }
    while(1){}
}

///4
#inlude<reg51.h>
#include<absacc.h>
void main()
{
    char a;
    for(a = 0; a < 16; a++)
    {
        P0 = DBYTE[0x20 + a];
    }
    while(1){}
}

2题做一起,自行分开即可。

img

问题3

#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int i;

for(i=1;i<=128;i*=2)
cout<<i<<” “;
getch();
}

问题4

MOV R0,#20H
MOV R1,#03H;用于控制循环次数
MOV DPTR,#20H
LOOP:
MOV A, @R0
MOVX @DPTR , A
INC R0;片内RAM地址加一
INC DPTR;外部RAM地址加一
DJNZ R1,LOOP;未循环完3次,跳回继续移数值
SJMP $;停止
END
编程将片外RAM的1000H单元开始的100个字节的数据相加,结果存放于R7R6中:
MOV R6, #0
MOV R7, #0
CLR C;必须先将CY(进位标志)清零
MOV DPTR, #1000H
MOV R2, #100
LOOP:
MOVX A, @DPTR
ADD A, R6
MOV R6, A;存储低8位
JC ADD2;CY为一的话,跳转到ADD2,使R7加一(即低8位有进位的话,高8位要加一)
INC DPTR
DJNZ R1, LOOP
SJMP $
ADD2:
INC R7R7存储高8RET
END

【仅供参考】