㈠ 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;
串口控制寄存器