51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > PIC单片机 > 详细内容
pic单片机做的单键触发8位二进制累加计数器
发布时间:2009/7/17  阅读次数:770  字体大小: 【】 【】【
;**************************************************
   __CONFIG 3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭
;*************************************************
status       equ         3h     ;定义状态寄存器地址
portb         equ         6h     ;定义端口B的数据寄存器地址
trisb         equ         86h   ;定义端口B的方向控制寄存器地址
portc         equ         7h     ;定义端口C的数据寄存器地址
trisc         equ         87h   ;定义端口C的方向控制寄存器地址
data1         equ         20h   ;定义一个廷时变量寄存器
data2         equ         21h   ;定义另一个廷时变量寄存器
n1               equ         d13   ;定义一个外层循环廷时常数
n2               equ         0ffh     ;定义一个内层廷时常数
rp0             equ         5h         ;定义状态寄存器的页选位RP0
;*************************************************
                   org 000h             ;定义程序存放区域的起始地址
                   nop                       ;放置一条ICD必须的空操作指令
                   bsf status,rp0   ;设置文件寄存器体1
                   MOVlw 00h             ;将端口C的方向控制码00H先送W
                   MOVwf trisc         ;再转到方向寄存器,将其设置为输出
                   MOVlw 0ffh           ;同理,将端口B设置为输入
                   MOVwf trisb         ;
                   bcf status,rp0   ;恢复到文件寄存器体0
                   MOVlw 00h             ;送计器初值00H到RC口显示
                   MOVwf portc         ;
check         btfsc portb,0     ;测试S3按下否?是!跳过下条指令
                   goto check           ;否!则循环检测
                   call delay           ;调用廷时子程序,消除按钮抖动的影响
                   btfsc portb,0     ;再次测试S3按下否?是!跳过下条指令
                   goto check           ;否!则循不检测
                   incf portc,1       ;端口C的数据寄存器加1,并送LED显示
check1       btfss portb,0     ;测试S3断开否?是!跳过下条指令
                   goto check1         ;否!则循不检测
                   call delay           ;调用廷时子程序,消除按钮抖动的影响
                   btfss portb,0     ;再次测试S3断开否?是!跳过下条指令
                   goto check1         ;否!则循不检测
                   goto check           ;返回
;*************10MS廷时子程序************************
delay                                         ;子程序名,也是子程序入口地址
                   MOVlw n1               ;将外层循环参数值送到DATA1
                   MOVwf data1         ;
lp0             MOVlw n2               ;将内层循环参数值送到DATA2
                   MOVwf data2         ;
lp1             decfsz data2,1   ;变量DATA2内容递减,若为0则跳跃
                   goto lp1               ;跳转到LP1
                   decfsz data1,1   ;变量DATA1内容递减,若为0则跳跃
                   goto lp0               ;跳转到LP0
                   return                   ;返回主程序
                   end                         ;源程序结束
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号