历史上的今天
今天是:2025年01月12日(星期日)
2020年01月12日 | 基于pic单片机测温程序分享
2020-01-12 来源:elecfans
;振荡器1MHzR/C
;命令时钟250kHz
include

page1macro
bsfSTATUS,RP0;page1
endm
page0macro
bcfSTATUS,RP0;page0
endm
cbLOCk0ch
time1,temp
lo_val,hi_val,msn,lsn
digit1,digit2
count,read
ssave,wsave
flags
endc
;==================================
org00
gotoinit
org04
btfssINTCON,T0IF
gotoend_int
MOVwfwsave
swapfSTATUS,w
MOVwfssave;中断保护
decfcount,f
decfszread,f
gotoint2
calladconv;A/D
MOVlw.16;
MOVwfread
int2MOVfcount,0
btfscSTATUS,Z
bsfflags,0;eot
bcfINTCON,T0IF
end_intswapfssave,w
MOVwfSTATUS;
swapfwsave,f;
swapfwsave,w
retfie;
;==========查表===============
tableaddwfPCL;portb
retlwb’01110111’;0
retlwb’00010100’;1
retlwb’00111011’;2
retlwb’00111110’;3
retlwb’01011100’;4
retlwb’01101110’;5
retlwb’01101111’;6
retlwb’00110100’;7
retlwb’01111111’;8
retlwb’01111100’;9
retlw0
retlw0
retlw0
retlw0
retlw0
retlw0
retlw0
;*********************温度转变******************
lookupaddwfPCL
retlw.99;00
retlw.99;01
retlw.99;02
retlw.99;03
retlw.91;04
retlw.81;05
retlw.73;06
retlw.66;07
retlw.59;08
retlw.52;09
retlw.45;0A
retlw.39;0B
retlw.31;0C
retlw.23;0D
retlw.13;0E
retlw.0;0F
retlw.0;catchfor》f0h
;==========a/d转变值存到temp==========
interpMOVflsn,0;初值
swapflsn,w;swap&save
MOVwfmsn;intow
MOVlw0fh
andwflsn,f;stripoffupperrubbish
andwfmsn,f;stripoffupperrubbish
MOVfmsn,0;reload
calllookup;getvalue
MOVwflo_val;saveit
incfmsn,w;incrementpointer
calllookup;getnextvalue
subwflo_val,w;getdifference&save
MOVwfhi_val
multaddwfhi_val,f;addtocurrent
decfszlsn,f;countdownonmulTIplyloop
gotomult
swapfhi_val,w;divideby16
andlw0fh;extractuppernibble
subwflo_val,w;addlovaluetolovaluetogetresult
return
adconvbsfADCON0,GO;startconversion
MOVlw.5;waitdelay10uS
MOVwftemp
decfsztemp,f;loopforawhile
goto$-1
btfscADCON0,GO;testforendofconversion
goto$-1
retlw0
bin_bcdMOVwfdigit1;firstdigit
clrfdigit2;seconddigit
tenlopMOVlw.10
subwfdigit1,w;findouthowmany10’s
btfscSTATUS,C
incfdigit2,f
btfscSTATUS,C
MOVwfdigit1;remainder1’sleft
btfscSTATUS,C
gototenlop
return
;=======================================
initclrfPORTB
clrfPORTA
clrfADCON0
clrfflags
page1
MOVlwb’11110011’
MOVwfTRISA
MOVlwb’10000000’;
MOVwfTRISB;setupportb
MOVlwb’00000100’;/32
MOVwfOPTION_REG
MOVlwb’00000010’
MOVwfADCON1
page0
MOVlwb’00001000’;setupchangeofstateonportb
MOVwfINTCON;towakeup
sleep;shutdown
MOVlwb’11000001’;seta/dinternalrcclock
;channel0,a/drunning
MOVwfADCON0;doit
MOVlw.153;TImeoutvalue
MOVwfcount
MOVlw.16;intervalTImerreload
MOVwfread
MOVlwb’10100000’;setupchangeofstateonportb
MOVwfINTCON;towakeup
calladconv;performA/Dconversion
;==================main====================
mainbtfscflags,0;testfortimeout
gotoinit;yessoshutdown
MOVfADRES,0;loadvalue
MOVwflsn;storeforconversion
callinterp;usinginterpolationmethod
callbin_bcd;convertinto2digits
MOVfdigit1,0;loadmsb
calltable;convertinto7segmentformat
MOVwfPORTB;sendtodisplay
bsfPORTA,2;enablecharacter
btfssTMR0,6;testbit
goto$-1;loop
bcfPORTA,2
MOVfdigit2,0;loadlsb
calltable;convertinto7segmentformat
MOVwfPORTB;sendtodisplay
bsfPORTA,3;enablecharacter
btfscTMR0,6;testbit
goto$-1;loop
bcfPORTA,3
gotomain
end
史海拾趣
|
一 首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 客观的讲,工作需求量上DSP的需求比 ...… 查看全部问答> |
|
我在mdk环境下用jlink调试2440裸机程序,在SDRAM中运行顺利。现准备把程序烧写到norflash中,Scatter File如下: ;Run in Flash LR_ROM1 0x00000000 { ; load region ER_ROM1 0 ...… 查看全部问答> |
|
关于视频采集的问题,想请大侠们指点我一下。 给我一个大概的认识。 现在是这样: 我们有一台嵌入式一体机:就是2440&WINCE5.0,带有网口,USB接口,串口(232),10.4寸触摸屏。 Q1:我想知道摄像机(比如银行,公路的那种监控摄像头)采集到 ...… 查看全部问答> |
|
各位大侠: 现在把PAL制式的电视信号用ADV7180转换为ITU656格式的数字信号, 通过S3C2440的camera接口采集进去。 但PAL制式的信号是一帧由奇,偶两场组成。那采集的数据,S3C2440的DMA能自动的将奇,偶两场的数据整合成一帧存储起来, 还是需要 ...… 查看全部问答> |
|
为什么我写的串口中断接受程序,烧到51里就一直执行中断服务程序,而我根本没有产生中断,然后我把串口线拔下问题还是如此,代码如下: ;单片机内存分配申明! TEMPER_L EQU 29H;用于保存读出温度的低8位 TEMPER_H E ...… 查看全部问答> |
|
我的STM32101R8用6M的外部晶振后,串口输出的都是乱码,换成内部的HSI后,正常工作,问一下, 是不是STM32101R8只能用8M的晶振, 不能用6M的啊, 还是我的6M晶振有问题啊, … 查看全部问答> |




