新闻中心

EEPW首页>嵌入式系统>设计应用> PIC单片机adc转换并显示

PIC单片机adc转换并显示

作者: 时间:2016-11-29 来源:网络 收藏
CL04 BTFSS 57H,2;判断标志是否有进位
GOTO CL4;否
MOVLW 6H;
ADDWF 53H,1;自身加6H
CL4 BTFSS 57H,5;判断标志是否有进位
GOTO CL05;
INCF 51H,1;是进位
MOVLW 60H;
ADDWF 52H,1;自身加60H
CL05 BTFSS 57H,1;判断标志是否有进位
GOTO CL5;否
MOVLW 6H;
ADDWF 52H,1;自身加6H
CL5
CLRF 57H;清标志
DECFSZ 56H,1;
GOTO CL2;
RETURN;
;;;**************************************************************
;;; 十进制数调整
;;;**************************************************************
DA1 MOVWF 60H;将W里的数保存到60H里
MOVLW B00001111;
ANDWF 60H,0;将60H的数与00001111去除高4位
MOVWF 62H;将去除高位后的数保存到62H
MOVLW 0AH;
SUBWF 62H,0;去除高位的数减0AH
BTFSS STATUS,DC;判断是否比0AH大
GOTO DA2 ;否则跳转
ADDLW B10000;比0AH大则进位
MOVWF 62H;高4位加1
DA2 MOVLW B11110000;
ANDWF 60H,1;将60H的数与11110000去除低4位
MOVLW 0A0H;
SUBWF 60H,0;高4位的数减0A0H
BTFSS STATUS,C;判断是否比0A0H大
GOTO DA3;否
ADDWF 62H,1;是则将差加上低位
BSF STATUS,C;是则置位
GOTO DA4;
DA3 MOVFW 60H;
ADDWF 62H,1;否则将高4位加上低4位
MOVFW 62H;
ANDLW B11110000;
SUBLW 0A0H ;加后判断是否大于或等于0A0H
BCF STATUS,C;
BTFSS STATUS,Z;
GOTO DA4;否则退出
MOVLW B00001111;是
ANDWF 62H,1;则去掉高4位并进位
BSF STATUS,C;置进位标志
DA4 MOVFW 62H;
RETURN;
;**************************************************************
; 定时中断数码管显示程序
;**************************************************************
ZD01 BTFSS INTCON,T0IF;判断是否产生定时中断
GOTO ZD03;否跳出是继续执行
MOVWF W_TEMP;W备份到W_TEMP中
SWAPF STATUS,0;STATUS半字交换后送W
CLRF STATUS;选择体0为当前体备份
MOVWF STATUS_TEMP;将原来的STATUS送体0上的
MOVF PCLATH,0;PCLATH送W
MOVWF PCLATH_TEMP;W送备份寄存器中
CLRF PCLATH ;设置为0页
BCF INTCON,T0IF
BSF STATUS,RP0;体1
BCF STATUS,RP1;
MOVLW 0;
MOVWF TRISB;RB口设为输出口
MOVWF TRISD;RD口设为输出口
BCF STATUS,RP0;体0
BCF STATUS,RP1;
MOVLW 0FFH;
MOVWF PORTB;RB口输出高电平
MOVLW 0
MOVWF PORTD;RD口输出低电平起清屏作用
MOVFW INDF;间接寻址显示数据
CALL Q1;查数据表
MOVWF PORTB;显示断码输出到RB口
INCF FSR,1;间接寻址地址加1
MOVFW 41H ;位码
MOVWF PORTD;位码输出到RD口
RLF 41H,0;处理C
RLF 41H,1;左移位码
DECFSZ 40H,1;判断是否显示完4位
GOTO ZD02;否则继续显示
MOVLW 5;显示位数
MOVWF 40H;
MOVLW B00000001;位码
MOVWF 41H;
MOVLW 5AH;
MOVWF FSR ;间接寻址
ZD02
MOVLW 0FFH;
MOVFW TMR0;重装初值
; 恢复现场
CLRF STATUS;恢复到体0
MOVF PCLATH_TEMP,0;开始恢复数据
MOVWF PCLATH;恢复PCLATH
SWAPF STATUS_TEMP,0
MOVWF STATUS;恢复STATUS
SWAPF W_TEMP,1;半字交换后放回
SWAPF W_TEMP,0;再半字交换后送W
ZD03
RETFIE ;中断返回
ADC1 BSF STATUS,RP0;体1
BCF STATUS,RP1
MOVLW 0FFH
MOVWF TRISA;设置A口为输入口
MOVLW B10001110;设置ADC转换格式为右对齐并选RA0位AD口
MOVWF ADCON1
BCF STATUS,RP0;选择体0
BCF STATUS,RP1
MOVLW B11000001 ;选择ADC时钟频率选择RA0位AD通道使能ADC
MOVWF ADCON0
BSF ADCON0,GO;开始AD转换
BTFSC ADCON0,GO;判断是否转换完成
GOTO $-1
BSF ADCON0,GO;清完成标志
MOVFW ADRESH;将转换完成高位数存到50H
MOVWF 50H
BSF STATUS,RP0;体1
BCF STATUS,RP1
MOVFW ADRESL;将转换完成数存到51H
BCF STATUS,RP0;体0
BCF STATUS,RP1
MOVWF 51H
RETURN
M001 MOVLW 1
MOVWF 30H
M002 MOVLW D24
MOVWF 31H
M003 MOVLW D250
MOVWF 32H
DECFSZ 32H,1
GOTO $-1
DECFSZ 31H,1
GOTO M003
DECFSZ 30H,1
GOTO M002
RETURN
END
上一页 1 2 下一页

关键词:PIC单片机adc转

评论


技术专区