(1)因为寄存器都分散在不同的bank里,对寄存器操作时就是转换当前所在的bank。如果你知道是你要操作的寄存器在哪个bank,那么就直接movlb也可以。BANKSEL就是自动的,不用你去查datasheet了。
(2)MOVF:是把一个寄存器内存送入W寄存器中,如 MOVF 8, 0 就是把第8寄存器送到W中,后面是0说明存后F不变。
MOVWF:与上面相反,把W内容存入F寄存器中, 相当于MOV W to F。
(3)常用指令:
CLRF PORTD ; //PORTD 清零
BCF PORTE ; //RE0清零
MOVLW d'100; //意思是把100(D代表十进制),存入寄存器W
MOVLW k ; //将立即数k存入W寄存器中
MOVWF ADCON1; //将W的内容存入ADCON1寄存器中
MOVF f, d ; //如果d=0,f中的内容被传送至W寄存器。如果d=1,f的内容存在f本身,零标志位受影响。
BSF f, b ; //f寄存器中的第b位被置1
BCF f, b ; //f寄存器中的第b被清零
BTFSC f, b ; //如果f寄存器的b位为1,则执行下一条指令。如果为0,则放弃下一条指令,执行一条NOP指令,使之成为一条双周期指令。
BTFSS f, b ; //与BTFSC相反,0执行,为1则跳过
(4)一个例子 内置ADC设置
BANKSEL ADCON1 ; //选择寄存器ADCON1
MOVLW B’11110000’; //将立即数11110000传送给工作寄存器W 功能:Right justify, ADCRC,oscillator; Vdd and Vss Vref
MOVWF ADCON1 ; //将W的内容存入ADCON1寄存器
BANKSEL TRISA ; //选择寄存器TRISA
BSF TRISA,0 ; //将TRISA第0位置1,即将端口RA0设置为输入 功能:Set RA0 to input
BANKSEL ANSELA ; //选择寄存器ANSELA
BSF ANSELA,0 ; //将ANSLA的第0位置1,即将端口RA0设置为模拟输入 功能:Set RA0 to analog
BANKSEL ADCON0 ; //选择寄存器ADCON0
MOVLW B’00000001’ ; //将立即数00000001传送给工作寄存器W 功能:Select channel AN0;ADC conversion cycle in progress. ; ADC is enabled
MOVWF ADCON0 ; //将W内的数据传送给ADCON0寄存器
CALL SampleTime ; // 延时 Acquisiton delay
BSF ADCON0,ADGO ; //将ADCON0的ADGO位置1,开始转换 功能:Start conversion ADC Conversion Status bit。1 = ADC conversion cycle in progress.
BTFSC ADCON0,ADGO ; //Is conversion done? 判断ADCON0的GO位是否为0? 为0则跳过,为1则顺序执行;
GOTO $-1 ; // No, test again 没有转换完成,再检测一遍
BANKSEL ADRESH ; //选择寄存器ADRESH
MOVF ADRESH,W ; // Read upper 2 bits 将高位ADRESH的数据存入W寄存器中
MOVWF RESULTHI ; //store in GPR space 将数据存储
BANKSEL ADRESL ; //选择寄存器ADRESL
MOVF ADRESL,W ; //Read lower 8 bits
MOVWF RESULTLO ; //Store in GPR space
上一篇:PIC单片机-冲压出料监控
下一篇:PIC16F15323单片机 (ADC+温度传感器)--汇编+C语言
推荐阅读最新更新时间:2024-11-16 22:38
推荐帖子
- MDK4.1 生成的BIN 内容错误 !!!
- LPC1102规格书UM10249Page:128说到:当MCU计算Sector0中地址0-8的CHECKSUM为0时,程序进入用户代码区。否则进入ISP区。但我用Keil生成的代码,0-8的CHECKSUM不为零。是不是MDK不支持LPC1102的编译?请高手解答。如果是该用什么软件来开发LPC1102?Criterionforvalidusercode:ThereservedCortex-M0exceptionvectorlocation
- lijie1116 NXP MCU
- 求助!!!10—14V升压输出24V电路,用lm5022芯片,为什么芯片不能工作??
- 本帖最后由paulhyde于2014-9-1503:17编辑电路如图,Rsns用一段0.1欧的导线代替,M1用的是IFRF024N。我们的电路很奇怪的是输入一达到9V时,我们使用的稳压电源的输出就被限制死了,怎么调都调不到10V以上,mos管也十分的烫,感觉lm5022就没有工作,因为lm5022的out引脚一直就没有pwm波形输出,我们设计的是输入10-14V,输出24V的电路,可以告诉我们这是什么原因吗??谢谢了!!!求助!!!10—14V升压输出24V电路,用lm
- jjjj~~~ 电子竞赛
- VHDL学习理解
- 一.关于端口VHDL共定义了5种类型的端口,分别是In,Out,Inout,Buffer及Linkage,实际设计时只会用到前四种。In和Out端口的使用相对简单。这里,我们主要讲述关于buffer和inout使用时的注意事项。与Out端口比,Buffer端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,因为buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回
- eeleader FPGA/CPLD
- 《基于wince的网络音视频通信(简单易明版)》中开发板的ip问题
- 源程序来自hellogv的《基于wince的网络音视频通信(简单易明版)》。我用的是wifi通信方式,2440与pc机通信。路由器给pc机分配的ip是192.168.0.100;给arm板分配的ip是192.168.0.101;为什么在2440上运行该程序的时候,localip显示的是192.168.0.234???应该显示192.168.0.101才对啊!!下面是对话框的初始化代码,localip=192.168.0.234就是由下面代码产生的。就是不知道怎么会取得192.168.0.
- 毅通客服1 WindowsCE
- 请教sallen key 滤波问题
- 问题在附件。请教sallenkey滤波问题可能我没有说清楚。当R=1K,C1=2n,C2=1n与R=5K,C1=10n,C2=5n两个电路,fo的Q值是否一样?首先,这是低通滤波器,所以不能用中心频率除以带宽的方法求Q值。二楼的问题很显然,转折频率肯定是不同的,但是Q值是一样的。想用简单方法计算出这个电路不同电阻和/或电容的截止频率,我摆弄很久都只能在有条件下的接近。看到你所说当Q值等于0.7,该频点的衰减只好3dB。而2楼的电路参数,Q一样,那么衰减在3dB的频点不同,就一
- captzs 模拟电子
- wince 6.0
- 请问哪位大虾有wince6.0的下载地址啊,还有wince5.0和wince6.0能够同时在一台电脑上装吗?wince6.0微软的网站上面有的下,你到微软网站上面搜索一下就可以了。ce5,ce6可以的,我的ce5还和ce6安装在同一个盘符下面呢,目前还没有发现什么问题。楼上正解。ding!我这里有Wince4.2、5.0、6.0的正版软件。不过太大,没办法我的系统上安装了3个版本的,没问题。只不过如果卸载5.0的话,就会导致6.0出问题,需要重新修复6.0
- hlyft WindowsCE
设计资源 培训 开发板 精华推荐
- LTC3859AHFE 高效率、三路 24V/1V/1.2V 同步降压/升压转换器的典型应用电路(采用 12V 输入电压)
- 【训练营】EDA灯串-419308A
- 具有低漂移满量程微调的 LT1021DCS8-5 CMOS DAC 基准的典型应用
- MCP1725 500mA、低电压、低静态电流 LDO 可调输出稳压器的典型应用
- 用于 LCD 背光的 12-LED 调光 LED 驱动器
- 使用 Analog Devices 的 LTC6404CUD-1 的参考设计
- 具有双输入的 LTC3126HFE 12V、1MHz 降压转换器的典型应用电路
- 使用 Analog Devices 的 LT1764AEFE-1.5 的参考设计
- BDK-GEVK:Bluetooth® 低功耗物联网开发套件
- LTC3754EUH 演示板、16 通道 x 40mA LED 驱动器,具有 1% 的通道至通道电流匹配