历史上的今天
返回首页

历史上的今天

今天是:2024年12月06日(星期五)

正在发生

2019年12月06日 | PIC单片机学习知识之程序设计(二)

2019-12-06 来源:elecfans

上文中我们讲述了

PIC单片机基础学习之程序设计(一)

,接下来将继续为大家讲解PIC单片机程序设计(二),供大家学习。

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)


推荐阅读

史海拾趣

Accetek公司的发展小趣事

Accetek公司创立之初,面临着激烈的市场竞争和技术挑战。然而,创始人凭借对电子行业的深刻理解和前瞻性的眼光,选择了数控雕刻机和激光雕刻机作为公司的主营业务。通过不断的技术研发和市场调研,Accetek成功推出了一系列高质量、高性能的产品,逐渐在市场中站稳脚跟。

台湾远翔(Feeling Technology)公司的发展小趣事

乔光电子在技术创新方面始终走在行业前列。面对压敏电阻产品技术方面的挑战,如产品失效引发的起火问题,公司在苏州设立了专门的实验室,由7名成员组成研发团队,专注于材料研发。经过不懈努力,乔光电子成功解决了这一难题,并在全球范围内率先大批量使用刷铜技术,进一步提升了产品的性能和质量。此外,公司还不断引入新技术、新设备,提高产品的生产效率和品质,确保在全球市场中保持领先地位。

晨晶电子(Chenjing Electronics)公司的发展小趣事

随着国内市场的不断饱和,晨晶电子积极寻求海外市场的发展机遇。公司凭借优质的产品和服务,成功打开了国际市场的大门。通过与国外客户的深入合作,晨晶电子的产品逐渐走向世界,其品牌影响力也日益增强。同时,公司还积极参与国际电子行业的交流与合作,不断提升自身的国际竞争力。

华润微(CRMICRO)公司的发展小趣事

2001年,华润微成立矽科公司,开始涉足芯片设计业务。这一举措使公司能够为客户提供更加完整的解决方案,并进一步提升其市场竞争力。同时,华润微也意识到封装测试在半导体产业链中的重要性,于是在2003年成立安盛公司,开始进入封装测试领域。通过建立6英寸产线,华润微进一步巩固了其在半导体产业链中的地位。

BENCENT公司的发展小趣事

在取得一系列成绩的同时,BENCENT公司也始终关注可持续发展。公司注重环保和节能技术的研发和应用,致力于为客户提供更加环保、高效的电子产品。同时,公司还积极参与社会公益事业,回馈社会。展望未来,BENCENT公司将继续坚持创新驱动、质量为本的发展理念,不断推动电子行业的进步和发展。


请注意,这些故事仅为框架性的描述,并未包含具体的细节和数据。您可以根据BENCENT公司的实际情况和发展历程,对这些故事进行进一步的丰富和完善。同时,确保在描述事实时保持客观公正的态度,避免加入主观评价。

得力(deli)公司的发展小趣事

得力公司在文具和打印机领域取得成功后,并未满足于此,而是继续寻求新的增长点。2016年,得力集团与余姚得力工具有限公司合资成立宁波得力工具有限公司,正式进入电动工具领域。得力凭借其在技术研发和品质控制方面的优势,迅速在电动工具市场占据一席之地。特别是其自主研发的“红芯”系列电动工具,凭借其高品质、高性价比的特点,赢得了用户的广泛好评。

问答坊 | AI 解惑

OLED技术的现在和未来

在2008年北京奥运会开幕式上,大量使用的LED(发光二极管)技术将开幕式表演装点得美轮美奂。“鸟巢”会场中央地板的LED屏幕、表演者身上的LED装饰灯、空中升起的LED奥运五环、“鸟巢”会场看台上的大型LED屏幕等等,都成了举世关注的焦点。   科 ...…

查看全部问答>

ALTERA DE2开发板一個网路芯片DM9000A的应用范例

ALTERA DE2开发板一個网路芯片DM9000A的应用范例 [ 本帖最后由 unbj 于 2010-5-12 10:58 编辑 ]…

查看全部问答>

为什么8051的P0口可驱动8个LS型TTL负载,而P1口只可驱动4个?

    为什么8051的P0口可驱动8个LS型TTL负载,而P1口只可驱动4个?这个驱动数量是指低电平时P0口OD门能承受8个LS型TTL负载的电流还是指高电平时8个LS型TTL负载不会把电平拉低?…

查看全部问答>

中继转发

什么叫中继转发和中继深度?…

查看全部问答>

求助:程序运行时间与其所在的ROM地址有关!?

偶刚刚接触STM32,发现了两个令人费解的问题,请香主及各位帮忙(使用Keil uVision3 V3.55A):1、中断子程序的起始地址影响中断正常运行:   我将I2C2设成主机,并使用中断方式与I2C1通信,起初一切正常,这时I2C2中 ...…

查看全部问答>

STM8开发环境

STM8是ST推出的新一带8bit MCU,采用三级流水线,最大运行频率20MIPS@24MHz。具体资料请到STM8S的官方网页下载:http://www.st.com/mcu/modules.php?name=mcu&file=familiesdocs&FAM=113 这里就不罗嗦了。 工作的原因很早就有接触STM ...…

查看全部问答>