PIC单片机AD转换LED显示程序

;*单片机模拟量进行模/数转换,并用LED显示出来我们可以看到转换
;*结果,0位AD当做8位来用了,利用 单片机 片内硬件资源TMR0和预分频器,
;*为ADC提供定时启动信号,A/D转换的时钟源选用了系统周期的8倍,选
;*用了电源电压VDD和VSS作为基准电压,软件方式查询其中断标志位ADIF.
【PIC单片机AD转换LED显示程序】

;************************************************************
LISTP=16F877;列表伪指令
INCLUDE"P16F877.INC";把包含文件含入源程序
;**************************************************
__CONFIG3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭
;************************************************************
ORG0000H
NOP;放置一条ICD必段的空操作指令
START
BANKSELPORTC;选择同PORTC寄存器相同的体
CLRFPORTC;清PORTC
MOV LWB’010000001’;选择:时钟时钟源为FOSC/8,允许ADC工作
MOV WFADCON0;通道AN0,暂时不启动转换过程

BANKSELOPTION_REG;选择寄存器OPTION_REG的体为当前体
MOV LWB’10000111’;设定:RB口不用上拉,分频器配给TMR0
MOV WFOPTION_REG;分频比设为1:256
CLRFTRISC;PORTC所有管脚设为输出(接LED)
MOV LWB’00001110’;转换结果左对齐,只选1个A/D通道RA0/AN0
MOV WFADCON1;选择VDD和VSS作参考源
BANKSELPORTC;选中同寄存器PORTC的体为当前体
;---------------------------------
MAIN
BTFSSINTCON,T0IF;等待和循环检测TMR0溢出中断标志位
GOTOMAIN;如果没有发生TMR0溢出中断则返回循环检测
BCFINTCON,T0IF;如果发生了TMR0溢出中断,则清除标志位T0IF
BSFADCON0,GO;开启A/D转换过程
WAIT
BTFSSPIR1,ADIF;等待A/D转换过程结束,检测ADC中断标志位
GOTOWAIT;如果没有转换结束,则返回循环检测
MOV FADRESH,W;如果转换完毕,则把A/D结果读到W
MOV WFPORTC;经过W送C口LED显示
GOTOMAIN;循环进行A/D转换
;---------------------------------
END;源程序结束


    推荐阅读