单片机编程问题求解答

刚学单片机 许多还不会 刚遇到题目 求大神解答

FYI,试一下

#include <reg52.h>

sbit VD0 = P1^0;
sbit VD1 = P1^1;
sbit VD2 = P1^2;
sbit VD3 = P1^3;
sbit VD4 = P1^4;
sbit VD5 = P1^5;
sbit VD6 = P1^6;
sbit VD7 = P1^7;

void Delay400ms(); //函数声明

void main()
{
P1 = 0XFF; //初始化,开始全灭,注意不是1,是0XFF
while (1)
{
//外往内
VD0 = VD7 = 0;
Delay400ms(); //调用延时函数
P1 = 0XFF;   //重置P1
Delay400ms();

VD1 = VD6 = 0;
Delay400ms();
P1 = 0XFF;
Delay400ms();

VD2 = VD5 = 0;
Delay400ms();
P1 = 0XFF;
Delay400ms();

VD3 = VD4 = 0;
Delay400ms();
P1 = 0XFF;
Delay400ms();

//内往外
VD2 = VD5 = 0;
Delay400ms();
P1 = 0XFF;
Delay400ms();

VD1 = VD6 = 0;
Delay400ms();
P1 = 0XFF;
Delay400ms();
}
}

void Delay400ms() //@12.000MHz
{
unsigned char i, j, k;
i = 4;
j = 11;
k = 45;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}

温馨提示:内容为网友见解,仅供参考
无其他回答

单片机编程求解答
题目1。内存中有两个4字节无符号数相加,一个放在30H———33H开始的单元中,一个存放在40H———43H开始的单元中,请编程求他们的和,结果放在30H———33H中。2.8255并行接口芯片,A口工作在方式0输入,B口方式1输出,C口高位为输出,低位为输入,设控制寄存器地址为3BH,请确定控制字并初始化...

单片机问题求解答
1. MOV AX, ES:[1000H]源操作数的寻址方式是? 直接寻址 2. MOV AX, BAH[DI]源操作数的寻址方式是? 寄存器相对寻址 3. MOV AX, COUNT[BX]源操作数的寻址方式是? 寄存器相对寻址 4. MOV AX, COUNT[AX]源操作数的寻址方式是?MOV AX, COUNT[BX]寄存器相对寻址,MOV AX, COUNT[AX]是...

单片机中的题目求解答,谢谢。。
1.ADD A,30H 就是 累加器A和片内数据存储器30H单元的内容相加,和存入累加器 已知(A)=7AH ,(30H)=A5H 所以 (A)+(30H)=7AH+A5H=1FH CY=1 AC=0 一个整数+一个负数 相互抵消 没有溢出 OV=0 P=1 ,(PSW)=81H 2 ADD A,#30H 就是 累加器A和立即数30H...

单片机问题,求高手详解!
1、答案:00H,LCALL调用把地址0221H放到堆栈中,先低后高,所以08H是00H,PC也会变化,这里就不说了 2、十进制变成二进制不能一位对应四位,那个是十六进制变成2进制的方法。。。

你的提问中的“单片机指令”里的前三个问题,别人是怎么解答的呢??
2.程序设计题 (1)将片外RAM 8000H单元的内容传送到片内RAM 20H单元。MOV DPTR, #8000H MOVX A, @DPTR MOV 20H, A (2)将片内RAM 50H单元与51H单元的内容交换 MOV A, 50H MOV 50H, 51H MOV 51, A (3)使累加器A的内容“第四位”置1,低四位清零,其余位保持不...

单片机菜鸟,有一程序求解释
你这个程序只有第一个问题的解答,即只有X2的操作。X2的操作比较好理解,P进制运算中,将数左移一位就是乘P。如10进制数左移一位就是乘10。你对后面的程序理解有问题。注释“;累加器高位送入41H单元”是整个后面三条语句完成的,而并不是MOV 40H,A这条语句完成的。另:程序有问题,CLR C ...

求高手解答单片机问题。
( MOVC )指令用于单片机内部与外部ROM之间的查表。31、8751有两个16位可编程定时\/计数器,T0和T1。它们的功能可由控制寄存器( TMOD ) 、( TCON )的内容决定,且定时的时间或计数的次数与( THx )、( TLx )两个寄存器的初值有关。32、串行口的控制寄存器SCON中,REN的作用是( 允许接收...

C语言水平低下,问个关于单片机编程的低级问题
比如,截取小数点后第一个数,char zifu = (char)(x * 10) % 10 ,这个式子,把一个小数乘以10,再除以10,得余数,这个余数就是小数点后第一个位的数字了,然后要把这个数转成ASC码发出去,计算机的串口通讯用字符显示才能显示出数字的值。一个位一个位的数字发出去,小数点也要单独发一个点...

单片机题(求详细解答)
执行前两条指令,是把地址放到寄存器中;P2中是高八位地址,R0中是低八位地址。R0表示的是R0中的内容为地址的存储器单元的内容,即80H;第三条指令是把片外2000H中得内容80H放到累加器A中。

求单片机习题解答
0011 0111 --- 00XX 0XXX ,00XX 0XXX 这就是得到的结果,所以,P1.7 P1.3肯定是0,而P1.2保持原来的数值不变,如果P1.2原来是0,还是0,原来是1,还是1 第二问,ORL 是 “位或”操作,特点是有1则结果为1,全0结果才是0.同样的道理,83H转换成二进制是 1000 0011 XXXX XXXX 100...

相似回答