|
超級刷哦
外部串口RAM中從8000H開始的12單元的字節(jié)及其校驗(yàn)和,以串口方式1波特率4800發(fā)送
#include<reg51.h>
#define uchar unsigned char
void init_ps(void);
void send_data(uchar idata*d);
uchar xdata buf[0x0C]_at_0x8000;
uchar ph;
void init_ps(void)
{
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
PCON=0;
TR1=1;
SCON=0x50;
}
void send_data(uchar idata*d)
{
uchar i;
ph=0;
for(i=0;i<10;i++)
{
SBUF=d[i];
Ph+=d[i];
While(TI==0);
TI=0;
}
SBUF=ph;
While(TI==0);
TI=0;
}
void main(void)
{
Init_ps();
for(i=0;i<12;i++)
{
d[i]=i;
}
Send_data(buf);
}
B口按鍵狀態(tài)在A口對應(yīng)發(fā)光二極管顯示
#include<reg51.h>
#include<absacc.h>
# uchar unsigned char
#define CONT oxo1;
#define_8155_CMD XBYTE[0xEF00];
#define_8155_PA XBYTE[0xEF01];
#define_8155_PA XBYTE[0xEF02];
void main(void)
{
uchar i;
_8155_ CMD=CONT;
While(1)
{
i=_8155_PB;
_8155_PA=i;
delay();
}
}
波特率=(2/32) x f/【12x(256-初值)】
單片機(jī)數(shù)據(jù)存儲(chǔ)器可尋址空間范圍64K
復(fù)位狀態(tài):SP為07H 其余為00H
對單片機(jī)復(fù)位在RESET施加2個(gè)機(jī)器周期的高電平
總線驅(qū)動(dòng)擴(kuò)展:地址控制用240 ,241, 244 數(shù)據(jù)用245
擴(kuò)展數(shù)據(jù)存儲(chǔ)器RAM所需地址線:8KB要13條,16KB要14條,32KB要15條
指針SP指向棧頂,數(shù)據(jù)先入后出
指針長度為一個(gè)字節(jié):idata*,data*,pdata*. 兩個(gè)字節(jié):code*,xdata*
ALE輸出的下降沿鎖存低八位,其頻率為晶振頻率的六分之一
EA為低電平時(shí)只訪問外部程序存儲(chǔ)器
一個(gè)機(jī)器周期包含12個(gè)機(jī)器周期6個(gè)狀態(tài)周期12個(gè)節(jié)拍
8155有2個(gè)八位IO口,8255有3個(gè),單片機(jī)有4個(gè)
C51的絕對地址訪問方式:使用C51運(yùn)行庫中預(yù)定義宏,通過指針訪問,關(guān)鍵字_at_
位尋址區(qū)地址范圍:20H~2FH, 工作寄存器區(qū)地址范圍:00H~1FH
指針DPTR用來訪問外部的數(shù)據(jù)存儲(chǔ)器
壓棧操作匯編指令為PUSH,位變量清零指令為CLR
中斷服務(wù)程序的返回指令是RETI
PC為訪問程序存儲(chǔ)器提供地址,DPTR為訪問數(shù)據(jù)存儲(chǔ)器提供地址
8-3編碼器,P2口輸入,P3口低三位輸出,P3.5使能
#include<reg51.h>
void main()
{
unsigned char n;
while(1)
{
P2=0xff;
P3=0x20;
if(P3_5==0)
{
n=P2;
switch(n)
{
case 254:P3=0x00; break;
case 253:P3=0x01; break;
case 251:P3=x002; break;
case 247:P3=0x03; break;
case 239:P3=0x04; break;
case 223:P3=0x05; break;
case 191:P3=0x06; break;
case 127:P3=0x07; break;
default: P3=0x00; break;
}
}
else
P3=0xff;
}
}
1.請?jiān)趚data存儲(chǔ)空間定義指向字符型的存儲(chǔ)器指針變量px,該指針自身位于內(nèi)部存儲(chǔ)區(qū)data區(qū)。
char xdata *data px
2.請定義中斷服務(wù)函數(shù)service,該中斷函數(shù)使用外部中斷1作為中斷源,并為其指定工作寄存器組1。
void service ( ) interrupt 2 using 1
3.簡述MCS-51串行口發(fā)送數(shù)據(jù)的過程。
數(shù)據(jù)預(yù)先寫入串行口數(shù)據(jù)緩沖器(1分), 然后在移位時(shí)鐘脈沖(TXD)的控制下(1分),從串行口RXD端逐位移出(1分),發(fā)送完畢后,SCON寄存器的發(fā)送中斷TI被自動(dòng)置“1”(2分)。
4.MSC-51的定時(shí)器/計(jì)數(shù)器用作定時(shí)器時(shí),其定時(shí)時(shí)間與哪些因素有關(guān)?作計(jì)數(shù)器時(shí),對外界計(jì)數(shù)頻率有何限制?
工作方式、計(jì)數(shù)初值、時(shí)鐘頻率
計(jì)數(shù)脈沖的頻率不能高于震蕩脈沖頻率的1/24。
|
|