㈠ 51单片机程序分析
因控制字为 95H=10010101B
D0:设置PC3~PC0的数据传送方向。D0=1为输入;D0=0为输出。
D1:设置B口的数据传送方向。D1=1为输入;D1=0为输出.
D2:设置B口的工作方式。D2=1为方式1;D2=0为方式0。
D3:设置PC7~PC4的数据传送方向。D3=1为输入;D3=0为输出。
D4:设置A口的数据传送方向。D4=1为输入;D4=0为输出。
D6D5:设置A口的工作方式。D6D5=00为方式0,D6D5=01为方式1,D6D5=10或11为方式2。
D7:方式控制字的标志位,恒为1。
所以,执行指令后,A口方向为输入,B口方向为输出,PC7~PC4方向为输出。
㈡ 求大神帮忙看一个简单的单片机C51程序,点亮数码管的,不知道错在哪里,老是报错
一个简单问题你
char code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};; 后面多了一个分号,是大全角字符,你把它去掉编译器就不会报错了
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//延时程序
void delayMS(uint x)
{
uint i;
while(x--)
{
for(i=0;i<165;i++);
}
}
//主程序
void main()
{ uchar i=0;
P1=0x00;
while(1)
{
P1=~DSY_CODE[i];
i=(i+1)%10 ;
delayMS(300);
}
}
㈢ C51单片机的程序
加一个while循环就可以了。
while(1)
{
..............
检测到有效输入置标志flag=1;
if(flag==1)break;
}
㈣ C51单片机程序
TH0=0xf6;
TL0=0xff;
上两行是定时器/计数器T0的初值,因为T0是16位的,所以用TH0表示高八位,TL0表示低八位
TH1=0xfd;
TL1=0xfd;
T1初值
TMOD=0x21;
定时器/计数器模式控制寄存器如图
GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1
GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。
C/T=0时为定时功能,C/T=1时为计数功能
M0、M1——方式选择功能
M1M0工作方式计数器模式TMOD(设置定时器模式)
00方式013位计数器TMOD=0x00
01方式116位计数器TMOD=0x01
10方式2自动重装8位计数器TMOD=0x02
11方式3T0分为2个8位独立计数器,T1为无中断重装8位计数器TMOD=0x03
PCON=0x00;
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器
WDCON=0x00;清狗
SCON=0x50;
SCON1=0x40;
串口控制寄存器