pic12c508 c语言,PIC12C508 PIC12C509 指令集及程序设计技巧

本文详细介绍了PIC12C5XX单片机的指令系统,包括字节操作类、位操作类和常数及控制操作类指令,并给出了指令格式和操作状态影响。此外,还阐述了该单片机的四种寻址方式:寄存器间接寻址、立即数寻址、直接寻址和位寻址,提供了实例说明。
摘要由CSDN通过智能技术生成

§2.1  PIC12C5XX 指令概述

PIC12C5XX每条指令长12位,指令由操作码和操作数组成。PIC12C5XX共有33条指令,按操作分成三大类:

1、面向字节操作类

2、面向位操作类

3、常数操作和控制操作类。

全部指令如表2.1所示。面向字节操作类指令

(11-6)

(5)

(4-0)

OPCODE

d

f(FILE#)

二进制代码      HEX  名称     助记符,操作数   操作

状态影响

0000 0000 0000

000

空操作

NOP

0000 001f ffff

02f

W送到f

MOVWF f

W→f

1,4

0000 0100 0000

040

W清零

CLRW -

0→W

Z

0000 011f ffff

06f

f清零

CLRF f

0→f

Z

4

0000 10df ffff

08f

f减去W

SUBWF f,d

f-W→d

C,DC,Z

1,2,4

0000 11df ffff

0Cf

f递减

DECF f,d

f-1→d

Z

2,4

0001 00df ffff

10f

W和f做或运算

IORWF f,d

W∨f→d

Z

2,4

0001 01df ffff

14f

W和f做与运算

ANDWF f,d

W∧f→d

Z

2,4

0001 10df ffff

18f

W和f做异或运算

XORWF f,d

W〇f→d

Z

2,4

0001 11df ffff

1Cf

W加f

ADDWF f,d

W+f→d

C,DC,Z

1,2,4

0010 00df ffff

20f

传送f到d

MOVF f,d

f→d

Z

2,4

0010 01df ffff

24f

f取补

COMF f,d

f→d

Z

2,4

0010 10df ffff

28f

f递增

INCF f,d

f+1→d

Z

2,4

0010 11df ffff

2Cf

f递减,为0则跳

DECFSZ f,d

f-1→d,skip if zero

Z

2,4

0011 00df ffff

30f

f循环右移

RRF f,d

f(n)→d(n-1),f(0)→C,C→d(7)

C

2,4

0011 01df ffff

34f

f循环左移

RLF f,d

f(n)→d(n+1),f(7)→C,C→d(0)

C

2,4

0011 10df ffff

38f

f半字节交换

SWAPF f,d

f(0.3)←→f(4-7)→d

Z

2,4

0011 11df ffff

3Cf

f递增,为0则跳

INCFSZ f,d

f+1→d,skip if zero

Z

2,4

面向位操作类指令

(11-8)

(7-5)

(4-0)

OPCODE

b(BIT#)

f(FILE#)

二进制代码      HEX  名称     助记符,操作数   操作

状态影响

0100 bbbf ffff

4bf

清除f的位b

BCF   f,b

0→f(b)

Z

2,4

0101 bbbf ffff

5bf

设置f的位b

BSF   f,b

1→f(b)

Z

2,4

0110 bbbf ffff

6bf

测试f的位b,为0则跳

BTFSC f,b

Test bit(b) in file(f):Skip if clear

Z

0111 bbbf ffff

7bf

测试f的位b,为0则跳

BTFSS f,b

Test bit(b) in file(f):Skip if clear

Z

常数操作和控制操作类指令

(11-8)

(7-0)

OPCODE

k(LITERAL)

二进制代码      HEX  名称     助记符,操作数   操作

状态影响

0000 0000 0010

002

写OPTION寄存器

OPTION -

W→OPTION register

0000 0000 0011

003

进入睡眠状态

SLEEP -

0→WDT,stop oscillator

TO,PD

0000 0000 0100

004

清除WDT计时器

CLRWDT -

0→WDT(and prescaler,if assigned)

TO,PD

0000 0000 0fff

00f

设置I/O状态

TRIS   f

W→I/O control register f

3

1000 kkkk kkkk

8kk

子程序带参数返回

RETLW  k

k→W,Stack→PC

1001 kkkk kkkk

9kk

调用子程序

CALL   k

PC+1→Stack,K→PC

1

101k kkkk kkkk

Akk

跳转(K为9位)

GOTO   k

k→PC(9 bits)

1100 kkkk kkkk

Ckk

常数置入W

MOVLW  k

k→W

Z

1101 kkkk kkkk

Dkk

常数和W做或运算

IORLW  k

k∨W→W

Z

1110 kkkk kkkk

Ekk

常数和W做与运算

ANDLW  k

k∧W→W

Z

1111 kkkk kkkk

Fkk

常数和W做异或运算

XORLW  k

k○W→W

Z表2.1   PIC12C5XX 指令集

注:1、除GOTO指令外,任何有关写PC(F2)的指令(例如 CALL、MOVWF  2)都将会把PC寄存器的第9位清零。

2、若对I/O口寄存器进行操作,如“SUBWF   6,1”,则使用的F6的值是当前GP口上的状态值,而非GP口输出锁存器里的值。

3、指令“TRIS      6”将W寄存器中的内容写入GP的I/O口控制寄存器中:“1”关断对应端口的输出缓冲器,使其为输入(高阻)状态,“0”则使其为输出态。

4、当预分频器(Prescaler)分配给TIMER0后,任何对TMR0寄存器(F1)写操作的指令都将使预分频器清零。

§2.2  PIC12C5XX 指令寻址方式

PIC12C5XX 单片机 寻址方式根据操作数的来源,可分为寄存器间接寻址、立即数寻址、直接寻址和位寻址四种。

一、寄存器间接寻址

这种寻址方式通过寄存器F0(INDF)、F4(FSR)来实现。实际的寄存器地址放在FSR中,通过INDF来进行间接寻址。

例:        FSR             EQU             4

INDF           EQU             0

MOVLW      05H                           ; W=5

MOVWF      FSR                                 ; W(=5)→F4

MOVLW       55H                              ; W=55H

MOVWF      INDF                             ; W(=55H)→F5

上面这段程序把55H送入F5寄存器。间址寻址方式主要用于编写查表、写表程序,非常方便。请参考§2.7程序设计技巧。

二、立即数寻址

这种方式就是操作数为立即数,可直接从指令中获取。

例:         MOVLW      16H               ; 16H →W

三、直接寻址

这种方式是对任何一寄存器直接寻址访问。对PIC12C508,寄存器地址(5位)直接包括在指令中,对PIC12C509,寄存器地址中最高1位由FSR(F4)寄存器中的bit5决定,即体选位。

例:     MOVWF       8                 ; W→F8寄存器

MOVF        8,W                   ; F8→W

四、位寻址

这种寻址方式是对寄存器中的任一位(bit)进行操作。

例:     BSF           11,0              ; 把F11的第0位置为“1”。

§2.3  面向字节操作类指令

这类指令共有18条,包括有数据传送、算术和逻辑运算、数据移位和交换等操作。它们的操作都是在W数据寄存器f之间进行,其指令码结构为:

(11—6)

(5)

(4—0)

OPCODE

d

f(File#)

分享到:

eb16ac850798d72e084e2c3ed33ff707.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值