登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

PIC查表一点体会

作者:痞子 栏目:单片机
PIC查表一点体会
我们知道:在做51查表格的时候,是很容易的。
而用PIC查表格的时候就用点难。我最近做了一了一个查字符PIC程序(汇编的)
有一点本会拿出平与大家共享,有不对的地方请大家指出:
      1、第一是做表的时候:
直接用 DT 格式:如          
DT 0FFH,021H,011H,009H,005H,003H,001H,001H,001H,001H,001H
DT 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
DT 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
DT 001H,001H,001H,001H,001H,081H,081H,001H,001H,001H,001H
DT ………………………………
   ………………………………
    ……
    它相当于51的DB。之后编译自动编译成:RETLW 0XFF,RETLW 0X21 ,RETLW 0X11 ................................................................................................
       2、第二是页面:当一页放不下时,你把你的表格分成两页如:
      ORG 200H
DT 。。。。。。。。。。。。。
。。。。。。。。。。。。。。
      ORG 300H
DT 。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。
         你要做的,只是要分一下你要查找的内容在表格一还是在表格二。
       3、是PCLATH,要去设置。
       4、例:
           movlw    1fh            ;
    subwf    data1,1            ;(data)-20h=data
    movlw    high ascii        ;
    movwf    pch            ;计算地址
    movlw    low ascii-7        ;
         。
         。
         。
         。



    org   500h
adopt_ascii:                ;
    movf     pch,w            ;        
    movwf    pclath            ;
    movf    pcl,w            ;
    addwf    r1,0            ;
    movwf    2            ;w send pc   
ascii:                    ;
;!"#$%&'()*+,-./   20---2f
    dt 0x00,0x00,0x00,0x00,0x00,0x00,0x00
    dt 0x20,0x20,0x20,0x20,0x00,0x00,0x20
    dt 0x50,0xA0,0x00,0x00,0x00,0x00,0x00
    dt 0x50,0x50,0xF8,0x50,0xF8,0x50,0x50
    dt 0x20,0x70,0xB0,0xA0,0x60,0x30,0xB0
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。

2楼: >>参与讨论
goalwang
PIC查表
我使用的是PIC16C716进行查表
LOOK_SIN_TABLE:   
         movf     SIN_PT,W
         call     SIN_TABLE    ;W=return sin VALUE
         movwf    PORTB        ;PORTB=W
         goto     ISR_END
;#########################################
         org      0x400  ;这里不知道对不对,
SIN_TABLE:
         addwf    PCL,F   ;pcl=pcl+w
         retlw    .64     ;all 90 point
         retlw    .67
返回结果不太对啊请高手指点一下!

3楼: >>参与讨论
goalwang
查表
还是上面的程序在
ORG 0X400这里有问题,就是这个指令执行完后,PCL=0,接下来PCL=0X04,程序跳到中断入口处为啥会出现这样的问题,我看书上的查表程序都有一条这样的指令,不知道那里出现问题,请高手指点一下!

4楼: >>参与讨论
daiguoyuan
你看一下716一页是多大,是否超出了一页的范围
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
发现 mcc18 的一个 bug
为什么单步运行和连续运行的效果不一样?
求助:我用PIC16F877仿真有好多错,请看看是怎么回事!
请叫pic高手,SHU
93C46读出数据正确,但无法写入,请高手指点??
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号