网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > 单片机 > 正文
输出锯齿波
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: Admin 发布时间: 09/07/22

  ; ***************************************************************************

  ;文件名“5_2.ASM”

  ;功能:输出锯齿波。

  ; ***************************************************************************

  STATUSEQU03H;定义状态寄存器地址

  PORTCEQU07H;定义端口C的数据寄存器地址

  PORTDEQU08H;定义端口D的数据寄存器地址

  TRISCEQU87H;定义端口C的方向寄存器

  TRISDEQU88H;定义端口D的方向寄存器

  RP1EQU06H;定义状态寄存器中的页选位RP1

  RP0EQU05H;定义状态寄存器中的页选位RP0

  ZEQU02H;定义状态寄存器中的0标志位Z

  DCEQU01H;定义状态寄存器中的辅助进/借位标志位DC

  CEQU00H;定义状态寄存器中的进/借位标志位C

  DATA1EQU20H;定义外循环变量

  DATA2EQU21H;定义内循环变量

  TEMPEQU22H;定义临时变量存储端口D的输入

  TEMPHEQU23H;定义计数器变量H

  TEMPLEQU24H;定义计数器变量L

  W_TEMPEQU25H

  STATUS_TEMPEQU26H

  SCALEREQU27H

  AD_STATUSEQU28H

  COUNT1EQU03H;定义存储外循环次数的变量

  COUNT2EQU04H;定义存储内循环次数的变量

  ; ***************************主程序开始*********************************

  ORG00H

  NOP;空指令

  GOTO MAIN

  ; ********************************主程序开始*****************************

  MAIN

  CALL INITIAL;调初始化子程序

  LP_UP

  INCFTEMPL;TEMPL自加1

  BTFSCSTATUS,C;判断有没有进位

  GOTONEXT1;

  GOTONEXT2;

  NEXT1

  INCFTEMPH;TEMPH自加1

  BTFSSSTATUS,DC;判断有没有辅助进位

  GOTONEXT2;

  MOVLW0FH;将TEMPH置位

  MOVWFTEMPH;

  MOVLW0FFH;将TEMPL置位

  MOVWFTEMPL;

  CLRFTEMPL;已经达到最大值,

  CLRFTEMPH;先将计数器进行清零操作

  GOTOLP_DOWN;接下来进行自减操作

  NEXT2

  NOP

  CALLDELAY;调延时子程序

  MOVFTEMPL;在端口C输出低8位

  MOVWFPORTC;

  MOVLW80H;

  ADDWFTEMPH,1;TEMP自加80H,使ADC芯片不会产生误操作

  MOVFTEMPH;在端口D输出高4位

  BSFPORTD,7;在端口RD7输出写入脉冲

  BCFPORTD,7;

  BSFPORTD,7;

  MOVLW80H;

  SUBWFTEMPH,1;TEMP自减80H

  GOTOLP_UP;

  LP_DOWN

  DECFTEMPL;TEMPL自减1

  BTFSCSTATUS,C;判断有没有借位

  GOTONEXT3;

  GOTONEXT4;

  NEXT3

  DECFTEMPH;TEMPH自减1

  BTFSSSTATUS,Z;判断有没有辅助借位

  GOTONEXT4;

  CLRFTEMPL;先将计数器进行清零操作

  CLRFTEMPH;

  GOTOLP_UP;接下来进行自加操作

  NEXT4

  NOP

  CALLDELAY;调延时子程序

  MOVFTEMPL;在端口C输出低8位

  MOVWFPORTC;

  MOVLW80H;

  ADDWFTEMPH,1;TEMP自加80H,使ADC芯片不会产生误操作

  MOVFTEMPH;在端口D输出高4位

  BSFPORTD,7;在端口RD7输出写入脉冲

  BCFPORTD,7;

  BSFPORTD,7;

  MOVLW80H;

  SUBWFTEMPH,1;TEMP自减80H

  GOTOLP_DOWN;

  ; ***************************************************************************

  ; ***************************初始化子程序开始*********************************

  INITIAL

  BSFSTATUS,RP0;转到体1

  BCFSTATUS,RP1;

  MOVLW0FFH;将端口C设为输入

  MOVWFTRISC;

  MOVLW0FFH;将端口D设为输出

  MOVWFTRISD;

  BCFSTATUS,RP0;转到体0

  BCFSTATUS,RP1;

  CLRFTEMPL;清TEMPL

  CLRFTEMPH;清TEMPH

  RETURN

  ; ***************************初始化子程序结束*********************************

  ; ***************************延时子程序****************************************

  DELAY

  MOVLWCOUNT1;设置外部循环的次数

  MOVWFDATA1;

  LOOP1

  MOVLWCOUNT2;设置内部循环的次数

  MOVWFDATA2;

  LOOP2

  DECFSZDATA1,1;内部循环变量自减1,为0则跳转

  GOTOLOOP2;

  DECFSZDATA2,1;外部循环变量自减1,为0则跳转

  GOTOLOOP1;

  RETURN;返回主程序

  ; ***************************延时子程序结束*************************************

  ; ***************************主程序结束*************************************

  END

  • 上一篇资讯: 用PWM控制直流电机
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号