当前位置:首页 > 嵌入式 > 嵌入式硬件

http://  pic单片机的查表程序可以利用子程序带值返回的特点来实现。具体是在主程序中先取表数据地址放入w,接着调用子程序,子程序的第一条指令将w置入pc,则程序跳到数据地址的地方,再由“retlw”指令将数据放入w返回到主程序。下面程序以f10放表头地址。

       movlw  table     ;表头地址→f10  
       movwf  10
          ┋
       movlw  1        ;1→w,准备取“1”的线段值
       addwf  10,1      ;f10+w =“1”的数据地址
       call  convert
       movwf  6        ;线段值置到b口,点亮led
          ┋
   convert movwf  2        ;w→pc table
       retlw  0c0h      ;“0”线段值
       retlw  0f9h      ;“1”线段值
          ┋
       retlw  90h       ;“9”线段值

   9)“read……data,restore”格式程序

   “read……data”程序是每次读取数据表的一个数据,然后将数据指针加1,准备取下一个数据。下例程序中以f10为数据表起始地址,f11做数据指针。

       pointer  equ  11   ;定义f11名称为pointer
          ┋
       movlw   data
       movwf   10     ;数据表头地址→f10
       clrf   pointer   ;数据指针清零
          ┋
       movf   pointer,0  
       addwf 10,0      ;w =f10+pointer
          ┋
      incf    pointer,1  ;指针加1
      call convert      ;调子程序,取表格数据
          ┋
   convert movwf   2    ;数据地址→pc
   data  retlw   20h    ;数据
          ┋
      retlw 15h      ;数据
   如果要执行“restore”,只要执行一条“clrf pointer”即可。

   10) pic单片机 延时程序

   如果延时时间较短,可以让程序简单地连续执行几条空操作指令“nop”。如果延时时间长,可以用循环来实现。下例以f10计算,使循环重复执行100次。

      movlw d‘100’
      movwf 10
   loop  decfsz 10,1   ;f10—1→f10,结果为零则跳
      goto loop
       ┋
   延时程序中计算指令执行的时间和即为延时时间。如果使用4mhz振荡,则每个指令周期为1μs。所以单周期指令时间为1μs,双周期指令时间为2μs。在上例的loop循环延时时间即为:(1+2)*100+2=302(μs)。在循环中插入空操作指令即可延长延时时间:
       movlw  d‘100’
       movwf  10
   loop   nop
       nop
       nop
       decfsz 10,1
       goto loop
        ┋
   延时时间=(1+1+1+1+2)*100+2=602(μs)。
   用几个循环嵌套的方式可以大大延长延时时间。下例用2个循环来做延时:
       movlw   d‘100’
       movwf   10
   loop  movlw   d‘16’
       movwf   11
   loop1  decfsz   11,1
       goto    loop1
       decfsz   10,1
       goto loop
       ┋
   延时时间=1+1+[1+1+(1+2)*16-1+1+2]*100-1=5201(μs)

   11) pic单片机rtcc计数器的使用

   rtcc是一个脉冲计数器,它的计数脉冲有二个来源,一个是从rtcc引脚输入的外部信号,一个是内部的指令时钟信号。可以用程序来选择其中一个信号源作为输入。rtcc可被程序用作计时之用;程序读取rtcc寄存器值以计算时间。当rtcc作为内部计时器使用时需将rtcc管脚接vdd或vss,以减少干扰和耗电流。下例程序以rtcc做延时:
       rtcc  equ  1
       ┋
       clrf  rtcc    ;rtcc清0
       movlw  07h
       option    ;选择预设倍数1:256→rtcc
   loop  movlw  255   ;rtcc计数终值
       subwf  rtcc,0
       btfss status,z   ;rtcc=255?
       goto loop
        ┋
   这个延时程序中,每过256个指令周期rtcc寄存器增1(分频比=1:256),设芯片使用4mhz振荡,则:
   延时时间=256*256=65536(μs)
   rtcc是自振式的,在它计数时,程序可以去做别的事情,只要隔一段时间去读取它,检测它的计数值即可。

   12) 寄存器体(ban

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python
关闭
关闭