- 一、说明
- 二、重点
- 三、实现
- 四、下载
用Proteus仿真编程实现以下功能:
- 并行扩展电路设计
- 单片机系统总线及其并行扩展的工作原理及实现方法
- 外部常用的扩展元器件的功能及使用方法
- 单片机串行扩展的基本方式
#include四、下载#include xdata unsigned char RAM8155[256] _at_ 0x3F00; xdata unsigned char IO8155[6] _at_ 0xBF00; unsigned char ad_result,j; unsigned int i,k ; //i 为 int 变量,和绝对地址匹配 sbit ADDA=P1^0; sbit ADDB= P1^1; sbit ADDC= P1^2; sbit STA= P1^3; sbit EOC= P1^4; sbit CLOCK= P1^6; sbit flag=PSW^5; void int_8155 (void) //8155 初始化函数 { IO8155[0]=0x4D; //PA、C 均为输出口,PB 为输入口。 for(i=0;i<256;i++) //8155 中 RAM 单元依次放 0、1、2、…255 RAM8155[i]=i; } void main() { int_8155(); //8155 初始化 廖轶超项目4 for(i=0;i<256;i++) { j=RAM8155[i]; IO8155[1]=j; //读取 8155RAM 单元的内容,并由 PA 口输出驱动 LED 显示 for(k=0;k<1000;k++); } CLOCK=0;j=0;EOC=1; while(1) { //选择 A/D 通道 if(j<50){ADDA=1;ADDB=0;ADDC=0;} else if((j>=50)&&(j<100)){ADDA=1;ADDB=0;ADDC=0;} else if((j>=100)&&(j<150)){ADDA=0;ADDB=1;ADDC=0;} else if((j>=150)&&(j<200)){ADDA=1;ADDB=1;ADDC=0;} STA=0;STA=1; STA=0; //启动转换 while(1) { CLOCK=!CLOCK; if(EOC==1)break;} //转换结束信号 EOC 查询 ad_result=IO8155[2]; //由 PB 口读入 A/D 结果 j++; //计算 RAM 单元 RAM8155[j-1]=ad_result; // A/D 结果存入 8155 的 RAM 单元 IO8155[1]=ad_result; // A/D 结果送 PA 口显示 if (j>=200) j=0; // 一轮结果存放完毕,存放单元下标清零。 } }
详见:STC51单片机-应用系统并行扩展电路设计(存储器扩展)-物联网应用系统设计项目开发



