当前位置:首页 > 单片机整理笔记
} } }
/* 串行口初始化 */ void init_serial( void ) {
SCON = 0x50; //串行工作方式1, 8位异步通信方式 TMOD |= 0x20; //定时器1, 方式 2, 8位自动重装 PCON |= 0x80; //SMOD=1,表示数据传输率加倍 TH1 = 0xF4; //数据传输率:4800 fosc=11.0592MHz IE |= 0x90; //允许串行中断 TR1 = 1; //启动定时器1 }
/* 向串口发送一个字符 */ void send_char( unsigned char x) {
SBUF=x; while (TI== 0 ); TI= 0; }
/* 向串口发送一个字符串,string_length为该字符串长度 */ void send_string( unsigned char *s, unsigned int string_length) {
unsigned int i= 0; do
{
send_char(*(s + i)); //向串口发送一个字符 i++; }
while ( i /* 串口接收中断函数 */ void serial () interrupt 4 using 3 { if (RI) { unsigned char x; RI = 0; x=SBUF; //接收字符 if ( x> 127 ) { counter= 0; inbuf[counter]=x; checksum= x- 128; } else { counter++; inbuf[counter]=x; checksum ^= x; if ((counter==(length- 1)) && (!checksum)) { flag= 1; //如果串口接收的数据达到length个,且校验没错, //就置位取数标志 } } } } 单片机的存储器扩展 总线 地址总线 P0口作为低八位地址,P2口作为高八位地址,两者共同构造地址总线。由此可见,单片机最多可以有16条地址线,因此最大寻址范围为64 KB(0000H~FFFFH)。地址总线是单向的,只能由单片机向外发送。 数据总线 数据总线由P0口构成,双向。 需要注意的是P0口兼作地址总线的低八位,所以需要将这低八位地址先锁存起来。 控制总线 单片机方面,根据不同的扩展情况使用PSEN,ALE,RD,WR等作为控制总线。 RAM的OE和WE分别接单片机的RD和WR。 ROM只能读不能写,OE接PSEN。 地址锁存器的使能信号接单片机的ALE。 地址分配 有线选法和译码法。线选法连线简单,无需译码器,但是地址不连续。译码法(部分译码、全译码)使用译码器的译码输出作为存储器的片选信号。 常用芯片 74LS373:74LS373是带三态缓冲输出的8D锁存器。74LS373的锁存控制端G直接与单片机的锁存控制信号ALE相连,在ALE的下降沿锁存低8位地址。 74LS138:3-8线译码器。 ROM芯片:(27-EPROM)2716(2K×8)、2732(4K×8)、2764(8K×8)、27128(16K×8)、27256(32K×8)、27512(64K×8)等。(28-EEPROM):2816(2K×8)、2864(8K×8)。 RAM芯片:6116(2K×8位)、6264(8K×8位)、62256(32K×8位)。 电路图 ROM扩展电路
共分享92篇相关文档