一、8255与8051单片机的连接要求: 8255的片选信号CS连到8051的P2.7,端口地址选择信号A1、A0由P2.1、P2.0提供。画出Proteus电路,分析8255的PA、PB、PC及控制口的地址。编程实现8255的PA口按方式0输出,PB口按方式0输入,将PB口外接8个开关,开关的状态通过PA口外接的8个LED灯反映出来。利用Proteus进行仿真。
原理图如下:
C语言代码如下:
#include#include #define uchar usigned char #define PORTA 0x7CFF //定义8255 PA口地址 #define PORTB 0x7DFF //定义8255 PB口地址 #define PORTC 0x7EFF //定义8255 PC口地址 #define CADDR 0x7FFF //定义控制口地址 void main(){ XBYTE [CADDR] = 0x82; while(1){ XBYTE[PORTA] = XBYTE[PORTB]; } }
二、8051串行口采用方式1发送数据给PC,晶振频率11.0592MHz,定时器T1作为波特率发生器,工作在方式2,设置波特率为9600,smod=0,计算T1的初值并给出C语言程序设计, Proteus设计电路并进行仿真。
首先计算SCON和T1的初值:
SCON=01010000=50H
T1=256-11059200/(9600*32*12)=256-3=253=FDH
代码如下:
#includecode Tab [ ]={ 0x31, 0x32, 0x33,0x34,0x35,0x36,0x37,0x38,0x39}; void send(unsigned char dat ){ SBUF=dat; while(TI==0); TI=0; } void delay() { unsigned int i; for(i=0;i<30000;i++); } void main(void){ unsigned char i; TMOD=0x20; SCON=0x50; PCON=0x00; TH1=0xFD; TL1=0xFD; TR1=1; while(1){ for(i=0;i<9;i++){ send(Tab[i]); P1=Tab[i]-0x30; delay();} } }
keil5仿真图:
protues仿真原理图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)