您的位置 首页 技术

PIC单片机的根本编程汇总,初学者必看

PIC单片机的基本编程汇总,初学者必看-STATUS EQU03H;特殊功能寄存器定义

TRISD EQU88H;特殊功能寄存器定义

PORTD EQU08H;特殊功能寄存器定义

TRISE EQU89H;特殊功能寄存器定义

PORTE EQU09H;特殊功能寄存器定义

合适3ePIC试验板,爱晶产品销售服务做的欠好,很多C程序都是自己写的,不过汇编程序参阅一下不错。

P%&&&&&%单片机的根本编程汇总,初学者必看

;——————————————————————————————

;单双位改换显现试验参阅程序留意:此程序请用单步履行(试验1-1.asm)

;——————————————————————————————

STATUS EQU03H;特别功用寄存器界说

TRISD EQU88H;特别功用寄存器界说

PORTD EQU08H;特别功用寄存器界说

TRISE EQU89H;特别功用寄存器界说

PORTE EQU09H;特别功用寄存器界说

ORG0000H;复位地址

NOP;MPLAB专用句子

STBSFSTATUS,5;挑选体1

CLRFTRISD;PORTD设置为输出

CLRFTRISE;PORTE设置为输出

BCFSTATUS,5;挑选体0

BCF PORTE,0;RE0清零,选通LED

LOOPMOVLWB‘10101010’

MOVWFPORTD;设置PORTD的值

MOVLWB‘01010101’

MOVWFPORTD;再次设置PORTD的值

GOTOLOOP;循环操作

;——————————————————————————————

END

;——————————————————————————————

本文引证地址: http://www.21ic.com/app/mcu/201810/786583.htm

;——————————————————————————————

;软件延时主动计数试验参阅程序(试验1-2.asm)

;——————————————————————————————

STATUS EQU03H ;特别功用寄存器界说

TRISD EQU88H;特别功用寄存器界说

PORTDEQU08H;特别功用寄存器界说

TRISE EQU89H;特别功用寄存器界说

PORTEEQU09H;特别功用寄存器界说

ORG0000H;复位地址

NOP;MPLAB专用句子

STBSFSTATUS,5;挑选体1

CLRF TRISD;PORTD设置为输出

CLRF TRISE;PORTE设置为输出

BCFSTATUS,5;挑选体0

CLRF PORTD;PORTD清零

BCF PORTE,0;RE0清零,选通LED

LOOPCALL DELAY1S;调用1S推迟程序

INCF PORTD;PORTD+1

GOTO LOOP;循环操作

;——————————————————————————————

;1秒延时子程序参阅程序

;——————————————————————————————

DELAY1S MOVLW 06H;外循环常数

MOVWF 20H;外循环寄存器

LOP0MOVLW 0EBH;中循环常数

MOVWF 21H;中循环寄存器

LOP1MOVLW 0ECH;内循环常数

MOVWF 22H;内循环寄存器

LOP2DECFSZ 22H;内循环寄存器递减

GOTO LOP2;持续内循环

DECFSZ 21H;中循环寄存器递减

GOTO LOP1;持续中循环

DECFSZ 20H;外循环寄存器递减

GOTO LOP0;持续外循环

RETURN;回来

;——————————————————————————————

END

;——————————————————————————————

——————————————————————————————

;霓虹灯显现试验参阅程序(试验1-3.ASM)

;——————————————————————————————

STATUS EQU03H;特别功用寄存器界说

TRISD EQU88H;特别功用寄存器界说

PORTDEQU08H;特别功用寄存器界说

TRISE EQU89H;特别功用寄存器界说

PORTEEQU09H;特别功用寄存器界说

PCLEQU02H;特别功用寄存器界说

COUNTEREQU30H;自界说变量

ORG0000H;复位地址

NOP;MPLAB专用句子

STBSFSTATUS,5;挑选数据存储器体1

CLRF TRISD;界说RD口为输出

CLRF TRISE;PORTE设置为输出

BCFSTATUS,5;挑选数据存储器体0

CLRF PORTD;PORTD清零

BCF PORTE,0;RE0清零,选通LED

POPCLRF COUNTER;自界说变量COUNTER清0

LOOPMOVF COUNTER,0;取出变量COUNTER值

CALL TABLE;查表对应数据

MOVWF PORTD;从PORTD输出

CALL DELAY50MS;调用50MS延时

INCF COUNTER,1;循环变量递加

MOVF COUNTER,0;取出当时COUNTER变量值

SUBLW .20;是否已取出20个数据

BTFSC STATUS,2;查验Z标志位

GOTO POP;Z=1,表明一次循环完毕,COUNTER从头复位

GOTO LOOP;回来持续

;——————————————————————————————

;数据表内容

;——————————————————————————————

TABLE

ADDWFPCL,1;调查偏移量

RETLWB‘00011000’;第0种显现状况

RETLWB‘00111100’ ;第1种显现状况

RETLWB‘01111110’ ;第2种显现状况

RETLWB‘11111111’ ;第3种显现状况

RETLWB‘01111110’ ;第4种显现状况

RETLWB‘00111100’;第5种显现状况

RETLWB‘00011000’ ;第6种显现状况

RETLWB‘00000000’;第7种显现状况

RETLWB‘10000001’ ;第8种显现状况

RETLWB‘11000011’;第9种显现状况

RETLWB‘11100111’ ;第10种显现状况

RETLWB‘11111111’;第11种显现状况

RETLWB‘11100111’ ;第12种显现状况

RETLWB‘11000011’;第13种显现状况

RETLWB‘10000001’ ;第14种显现状况

RETLWB‘00000000’;第15种显现状况

RETLWB‘11111111’;第16种显现状况

RETLWB‘00000000’;第17种显现状况

RETLWB‘11111111’;第18种显现状况

RETLWB‘00000000’;第19种显现状况

;——————————————————————————————

;50MS软件延时子程序

;——————————————————————————————

DELAY50MS

MOVLW 41H;外循环常数

MOVWF 20H;外循环寄存器

LOOP1 MOVLW 0FFH;内循环常数

MOVWF 21H;内循环寄存器

LOOP2DECFSZ 21H;内循环寄存器递减

GOTO LOOP2 ;持续内循环

DECFSZ 20H;外循环寄存器递减

GOTO LOOP1 ;持续外循环

RETURN;回来

;——————————————————————————————

END

;——————————————————————————————

;——————————————————————————————

;动态数码主动计数显现试验参阅程序(试验2-1.asm)

;——————————————————————————————

LISTP=16F877A

INCLUDE“P16F877A.INC”;头文件的设定

;——————————————————————————————

;BAW、SHW、 GEW和COUNTER变量的界说

COUNTEREQU71H;可用于循环的次数变量

QWEQU7CH;可用于十进制千位变量

BAWEQU7DH;可用于十进制百位变量

SHWEQU7EH;可用于十进制十位变量

GEWEQU7FH;可用于十进制个位变量

;——————————————————————————————

ORG0000H;复位地址

NOP;MPLAB专用句子

CLRFQW

CLRFBAW

CLRFSHW

CLRFGEW;个、十、百寄存器清零

STBSFSTATUS,RP0;挑选体1

CLRFTRISD;PORTD设置为输出

MOVLWB‘11100001’

MOVWFTRISB;PORTB的B2-5设置为输出,其他输入

BCFSTATUS,RP0;挑选体0

CLRFPORTD;PORTD清零

LGEWMOVFGEW,W;个位计数处理

SUBLW09H

BTFSCSTATUS,Z

GOTOLSHW;个位有进位,转十位计数处理

INCFGEW,F;无进位,各位加1

MOVFGEW,W

MOVWF60H;存入个位寄存器

GOTOPINC;数值动态显现

LSHWCLRFGEW;十位计数处理

CLRF60H;个位有进位,个位清零

MOVFSHW,W;十位处理

SUBLW09H

BTFSCSTATUS,Z

GOTOLBAW;十位有进位,转百位计数处理

INCFSHW,F

MOVFSHW,W

MOVWF61H

GOTOPINC;数值动态显现

LBAWCLRFSHW;百位计数处理

CLRF61H;百位有进位,十位清零

MOVFBAW,W

SUBLW09H

BTFSCSTATUS,Z

GOTOLQW;百位有进位,转千位计数处理

INCFBAW,F

MOVFBAW,W

MOVWF62H

GOTOPINC

LQWCLRFBAW;千位计数处理

CLRF62H;千位有进位,百位清零

MOVFQW,W

SUBLW09H

BTFSCSTATUS,Z

GOTOQL;千位有进位,转清零处理

INCFQW,F

MOVFQW,W

MOVWF63H

GOTOPINC

QLCLRFGEW;个位计数处理

CLRFSHW;十位计数处理

CLRFBAW;百位计数处理

CLRFQW;千位计数处理

PINCNOP;数值动态显现处理

DTJPMOVLW19H

MOVWFCOUNTER;递加计数时刻常数设置

LJ DECFSZCOUNTER,1

GOTOLS;时刻未到,持续动态扫描显现

GOTOLR;时刻到,递加计数

LSBCFPORTB,1;显现个位数值编码

BSFPORTB,2

BSFPORTB,3

BSFPORTB,4

MOVFGEW,W

CALLBMA;调要显现的数值的编码

MOVWFPORTD

CALLDELAY10MS;动态扫描转换时刻操控

BSFPORTB,1;显现十位数值编码

BCFPORTB,2

BSFPORTB,3

BSFPORTB,4

MOVFSHW,W

CALLBMA;调要显现的数值的编码

MOVWFPORTD

CALLDELAY10MS;调用延时10MS程序

BSFPORTB,1;显现百位数值的编码

BSFPORTB,2

BCFPORTB,3

BSFPORTB,4

MOVFBAW,W

CALLBMA;调要显现的数值的编码

MOVWFPORTD

CALLDELAY10MS;调用延时10MS程序

BSFPORTB,1;显现千位数值的编码

BSFPORTB,2

BSFPORTB,3

BCFPORTB,4

MOVFQW,W

CALLBMA;调要显现的数值的编码

MOVWFPORTD

CALLDELAY10MS;调用延时10MS程序

GOTO LJ;回来显现时刻记时

LR GOTOLGEW;回来主程序

;—————————————————————————————–

;10MS延时

;—————————————————————————————–

DELAY10MS

MOVLW03H;0fh外循环常数

MOVWF20H;外循环寄存器

LOOP2MOVLW0FFH;中循环常数

MOVWF21H;中循环寄存器

L01DECFSZ21H,1;中循环寄存器递减

GOTOL01;持续中循环

DECFSZ20H,1;外循环寄存器递减

GOTOLOOP2;持续外循环

RETURN;回来

;——————————————————————————————

;编码查询

;——————————————————————————————

BMAADDWFPCL,F;调查偏移量

RETLW3FH;“0” 编码

RETLW06H;“1” 编码

RETLW5BH;“2” 编码

RETLW4FH;“3” 编码

RETLW66H;“4” 编码

RETLW6DH;“5” 编码

RETLW7DH;“6” 编码

RETLW07H;“7” 编码

RETLW7FH;“8” 编码

RETLW6FH;“9” 编码

;——————————————————————————————

END

;——————————————————————————————

;——————————————————————————————

;高4位主动计数低4位手动计数显现试验参阅程序(试验2-2.asm)

;——————————————————————————————

LISTP=16F877A

INCLUDE“P16F877A.INC”;头文件的设定

;——————————————————————————————

AAAEQU10H;高4位计数递加常数

GSWEQU30H;高4位值寄存器

DSWEQU31H;低4位值寄存器

ORG0000H ;复位地址

NOP ;MPLAB专用句子

STBSFSTATUS,RP0;挑选体1

MOVLW00H

MOVWFTRISD;PORTD设置为输出

MOVLW0FFH

MOVWFTRISB;PORTB设置为输入

MOVLW0FFH

MOVWFTRISC;PORTC设置为输入

CLRFTRISE;PORTE设置为输出

BCFSTATUS,RP0;挑选体0

CLRFPORTD;PORTD端口清零

BCF PORTE,0;RE0清零,选通LED

CLRFGSW;高4位值寄存器清零

CLRFDSW;低4位值寄存器清零

GOTOMAIN;转至MAIN

MAINNOP;高4位主动计数程序段

MOVLWAAA;送高4位计数递加常数

ADDWFPORTD,W

ANDLW0F0H;屏蔽低4位

MOVWFGSW

ADDWFDSW,W;高4位与低4位组成

MOVWFPORTD;送显

CALLDELAY1S;调用延时约1秒的子程序

GOTOMAIN

DELAY1S;含按键扫描的1秒延时子程序

MOVLW6H

MOVWF20H

LP2MOVLW0EAH

MOVWF21H

LP1MOVLW0FFH

MOVWF22H

J0BTFSCPORTC,5;J0按下么?

GOTOJ1;去判别J1是否按下

CALLDELAY10MS;防抖动推迟

BTFSCPORTC,5;J0按下承认

GOTOJ1;去判别J1是否按下

PP0BTFSSPORTC,5;J0按下,判J0是否开释

GOTOPP0;没有开释,再判

CALLDELAY10MS;防抖动推迟

BTFSSPORTC,5;J0牢靠开释?

GOTOPP0;不确定,则再判J0是否开释

INCFPORTD,W;D口加1

ANDLW0FH;屏蔽高四位

MOVWFDSW;送入低4位值存储器

ADDWFGSW,W;高四位加1

MOVWFPORTD;送D口显现

J1 BTFSCPORTB,0;J1按下么?

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/347026.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部