实现目标

用8255C口的PC3引脚向外输出连续的正方波信号,频率为500hz

Proteus仿真图

C51代码(软件延时)

/* 采用软件延时实现 */
#include <REG52.H>      /* special function register declarations */
#include <intrins.h>#define PA8255        XBYTE[0xe000]   /* 定义8255A口地址 */
#define PB8255      XBYTE[0xe001]   /* 定义8255B口地址 */
#define PC8255      XBYTE[0xe002]   /* 定义8255C口地址 */
#define COM8255     XBYTE[0xe003]   /* 定义8255控制寄存器地址 */void time(unsigned int ucMs);void init8255(void) { COM8255=0x80;/*工作方式选择字送入8255控制寄存器,设置A、B、C口为基本I/O输出方式 */
}
/******** main 函数 *********/
void main (void) {      init8255();while (TRUE) {       COM8255=0x07;  /*PC3置1*/time(1);/* 延时1ms */COM8255=0x06;  /*PC3清0*/time(1);/* 延时1ms */}
}/******** time C *********/
void time(unsigned int ucMs)//延时单位:ms
{#define DELAYTIMES  239    unsigned char ucCounter;    while(ucMs>0){while(ucMs!=0);for(ucCounter=0;ucCounter<DELAYTIMEScCounter++){}//延时    ucMs--;}

笔记

  • COM8255=0x80,定义8255的工作方式选择字,强调C口用于输出。
  • COM8255=0x07,定义8255的C口置/复位控制字,07=0000 0111,011表示PC3,1表示置位,也就是将PC3置为1
  • COM8255=0x06,定义8255的C口置/复位控制字,06=0000 0110,011表示PC3,0表示复位,也就是将PC3置为0
  • 具体查询8255初始化规则

思路:采用软件延时的方法,直接对PC3引脚的电位进行修改,达到输出连续方波的效果。

C51代码(中断)

/* 采用工作方式1定时器1中断实现 */
#include <REG52.H>    /* special function register declarations */
#include <Absacc.h>
#define TRUE  1
#define FALSE 0bit  bitFF;/* 位计数器 */
#define PA8255      XBYTE[0xe000]   /* 定义8255A口地址 */
#define PB8255      XBYTE[0xe001]   /* 定义8255B口地址 */
#define PC8255      XBYTE[0xe002]   /* 定义8255C口地址 */
#define COM8255     XBYTE[0xe003]   /* 定义8255控制寄存器地址 *//* 初始化8255 */
/*工作方式选择字送入8255控制寄存器,设置A、B、C口为基本I/O输出方式 */
void init8255(void) { COM8255=0x80;
}
/******** main 函数 *********/
void main (void) {  init8255(); /* 初始化8255 */TMOD=0x10; /* 设置定时器1为工作方式1 */     TH1=-500>>8;TL1=-500 % 256;/* 定时器1每1000计数脉冲发生1次中断,12MHz晶振,定时时间1000us */TCON=0x40; /* 内部脉冲计数 */IE=0x88;   /*打开定时器中断*/   while (TRUE) {time(1);/* 延时1ms */}
}
/******* 定时器/计数器1中断服务程序 ***/
void timer1int(void) interrupt 3
{   EA=0;/* 关总中断 */TR1=0;/*停止计数*/ TH1=-500>>8;TL1=-500 % 256;/* 重置计数初值 */ TR1=1;/*启动计数*/if(bitFF)COM8255=0x07;  /*PC3置1*/elseCOM8255=0x06;     /*PC3清0*/bitFF=!bitFF; EA=1;/* 开总中断 */
}

上述代码同样可以实现输出连续方波的效果,只是利用中断替代了软件延时,效率高一些

Proteus仿真:使用8255输出连续方波相关推荐

  1. 8086+DAC0832产生方波、三角波及正弦波波形Proteus仿真

    8086+DAC0832产生方波.三角波及正弦波波形Proteus仿真 仿真截图 代码 CODE SEGMENTDATA SEGMENT SQURE DB 0,0,0,0,0,0,0,0,0,0,25 ...

  2. 【Proteus仿真】在AT24C04的连续地址中写入数据并循环读取

    [Proteus仿真]在AT24C04的连续地址中写入数据并循环读取 Proteus仿真 实验说明 在AT24C04的地址0-9中分别写入数据,然后在while循环里面循环从AT24C04的地址0-9 ...

  3. 基于51单片机简易数字示波器Proteus仿真

    功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...

  4. 哈尔滨工业大学(威海)校园测速系统Proteus仿真

    哈尔滨工业大学(威海)校园测速Proteus仿真 实验目的 大学校园,是学生和教师生活.学习和工作的地方,校园内的道路属于人员密集区域,既要保证校园内的交通通行便利,又要保证教师和学生的安全,就要在学 ...

  5. 测量正弦电压信号之自制并行比较型ADC(TINA仿真)测量正弦电压之VFC模块(电压转频率,proteus仿真)

    要求:对一个连续电压信号进行测量,该信号为正弦电压信号,频率是100KHZ,峰峰值为2V. 思路1:选择一些器件根据AD转换原理去搭建一个系统,进 行测量. 思路2:将电压转化成频率,再进行测量. A ...

  6. c语言设计一个仿真窗口的程序,51单片机C语言实例(350例)Proteus仿真和代码

    100-24c02记忆开机次数 101-24c02存储上次使用中状态 102-DS1302 时钟原理 103-DS1302可调时钟 104-DS1302时钟串口自动更新时间 105-1602液晶显示D ...

  7. 计算机加法的电路原理及proteus仿真

    最近在休假中,太宅了,也没打算到处去玩.放空脑袋,读读写写,聊以自娱. 我们知道,计算机的功能,都是通过计算来完成的,而这个计算是怎样完成的呢?答案是:电路. 在前面的文章中,我们深入探讨了编码的本质 ...

  8. matlab单片机仿真,51单片机proteus仿真实验设计

    描述 这个proteus仿真是一个网友做的,该仿真可以生成方波.正弦波.锯齿波和三角波,并且还可以用按键调整波形. 不过,对初学者来讲,可能有点复杂.对于本科生来说,这个仿真几乎可以作为毕业论文了吧. ...

  9. 单片机实验笔记(汇编、Proteus仿真)(下)

    接上一条单片机实验笔记(汇编.Proteus仿真) 第五节课 第五节课 内容为驱动多位数码管.和驱动一位数码管大同小异. ORG 0000H LJMP MAINORG 0100H MAIN: MOV ...

  10. 51单片机c语言算法大全,51单片机C语言实例(350例)Proteus仿真和代码都有

    1-IO输出-点亮1个LED灯方法1 / h7 h! }$ P, {* F7 J  T10-LED循环左移 ! R+ }$ j) t5 a' \0 A100-24c02记忆开机次数 - d2 Q9 v ...

最新文章

  1. [转] splice系列系统调用
  2. linux打包压缩命令汇总
  3. 合并区间—leetcode56
  4. php for循环 循环奇数,php – Foreach,每个n项的特殊处理(奇数,甚至例如)
  5. java反射 修改静态方法的值 setAccessible
  6. 工作209:整理订单的重置逻辑
  7. 使用Cross-Page Postback(跨页面提交)在页面间传递数据
  8. idea代码可以编译但是爆红_推荐一款 IDEA 生成代码神器,写代码再也不用加班了...
  9. MyBatis入门基础(一)
  10. activiti流程变量
  11. word打开提示“所用加密类型不可用”
  12. EventUtil——跨浏览器的事件对象
  13. uniapp访问服务器缓存文件,uni-app浏览历史记录功能实现
  14. Apple苹果EDI案例
  15. 人脸识别产品问题及改进方法
  16. [附源码]java毕业设计家政管理系统
  17. Java中就什么是映射的简单理解
  18. 传奇链改游戏开发(传奇复古MIC)链游市场分析全面测评
  19. mac 请尝试使用字符较少,或不含标点符号的名称
  20. Oracle 快速入门 同义词序列视图索引

热门文章

  1. html动画转换为gif,css 将长图做成gif动画
  2. html屏幕阅读器,支持移动触摸的网页版PDF格式文件阅读器插件
  3. 做项目管理需要哪些技能?
  4. 微信小程序之WeUI组件库的使用
  5. SDL Trados 2019 (SR2)的下载和安装
  6. bootstrap 三级导航
  7. 网站建设备案和不备案的一些疑惑问题大全
  8. 服务器虚拟化的重要性,服务器虚拟化:虚拟机迁移的重要性
  9. 六自由度机械臂研究(3)- 机械臂DH参数表建立
  10. win7 专业版 破解教程