音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

誰有用51的18B20測溫和控制匯編程序?最近要用

作者:dyt88 欄目:單片機(jī)
誰有用51的18B20測溫和控制匯編程序?最近要用
如題,不要C寫的,要匯編的,主要是想學(xué)習(xí)一下.謝了.

2樓: >>參與討論
tissot
c+asm
#include <Reg51.h>
#include <intrins.h>

static unsigned CHAR bdata StateREG;    //可位尋址的狀態(tài)寄存器
sbit DS1820ON = StateREG^0;              //DS1820是否存在

#define TMPort            P1_7      //DS1820 DataPort

static unsigned CHAR bdata TLV _at_ 0x0029;         //溫度變量高低位
static unsigned CHAR bdata THV _at_ 0x0028;
static signed CHAR TMV;       //轉(zhuǎn)換后的溫度值

void InitDS1820(void);  //初始化DS1820
void ROMDS1820(void);    //跳過ROM匹配
void TMVDS1820(void);    //溫度轉(zhuǎn)換指令
void TMRDS1820(void);    //讀出溫度指令
void TMWDS1820(void);    //寫入溫度限制指令
void TMREDS1820(void);    //COPY RAM to E2PRAM
void TMERDS1820(void);    //COPY E2PRAM to RAM
void ReadDS1820(void);    //讀出溫度值
void WriteDS1820(void);    //寫入溫度限制值
void Delay_510(void);    //延時(shí)510微秒
void Delay_110(void);    //延時(shí)110微秒
void Delay_10ms(void);    //延時(shí)10ms


void InitDS1820(void)        //初始化DS1820
{
    TMPort = 1;        //拉高TMPort
    _nop_();      //保持一個(gè)周期
    TMPort = 0;        //拉低TMPort
    Delay_510();  //延時(shí)  DS1820復(fù)位時(shí)間要500us的低電平
      TMPort = 1;   //拉高TMPort
    _nop_();      //保持  
    _nop_();
    _nop_();
      Delay_110();  //延時(shí)110us 等待DS1820回應(yīng)
      if (!TMPort)  //回應(yīng)信號為低電平
        DS1820ON = 1;
     else
        DS1820ON = 0;
      Delay_110();  //延時(shí)
      Delay_110();
      TMPort = 1;   //拉高TMPort
}

void ROMDS1820(void)  //跳過ROM匹配
{
#pragma asm
          MOV A,#0CCH
          MOV R2,#8
          CLR C
WR1:    CLR P3_7
          MOV R3,#6
          DJNZ R3,$
          RRC A
          MOV P3_7,C
          MOV R3,#23
          DJNZ R3,$
          SETB P3_7
          NOP
         DJNZ R2,WR1
          SETB P3_7
#pragma endasm
}

void TMVDS1820(void)  //溫度轉(zhuǎn)換指令
{
#pragma asm
          MOV A,#44H
          MOV R2,#8
          CLR C
WR2:    CLR P3_7
          MOV R3,#6
          DJNZ R3,$
          RRC A
          MOV P3_7,C
          MOV R3,#23
          DJNZ R3,$
          SETB P3_7
          NOP
          DJNZ R2,WR2
          SETB P3_7
#pragma endasm
}

void TMRDS1820(void)  //讀出溫度指令
{
#pragma asm
          MOV A,#0BEH
          MOV R2,#8
          CLR C
WR3:    CLR P3_7
          MOV R3,#6
          DJNZ R3,$
          RRC A
          MOV P3_7,C
          MOV R3,#23
          DJNZ R3,$
          SETB P3_7
          NOP
          DJNZ R2,WR3
          SETB P3_7
#pragma endasm
}

void TMWDS1820(void)  //寫入溫度限制指令
{
#pragma asm
          MOV A,#04EH
         MOV R2,#8
          CLR C
WR13:  CLR P3_7
          MOV R3,#6
          DJNZ R3,$
          RRC A
          MOV P3_7,C
          MOV R3,#23
          DJNZ R3,$
          SETB P3_7
          NOP
          DJNZ R2,WR13
          SETB P3_7
#pragma endasm
}

void TMREDS1820(void)        //COPY RAM to E2PRAM
{
#pragma asm
          MOV A,#48H
          MOV R2,#8
          CLR C
WR33:    CLR P3_7
          MOV R3,#6
          DJNZ R3,$
          RRC A
          MOV P3_7,C
          MOV R3,#23
          DJNZ R3,$
          SETB P3_7
          NOP
    &n
3樓: >>參與討論
dreamflyme
供您參考
以下程序轉(zhuǎn)載自恒堅(jiān)電器(http://shop.hejoin.com/)


; DS18B20 溫度傳感器讀數(shù)接口
; 正確下載了程序以后,系統(tǒng)會(huì)利用數(shù)碼管的后3位顯示當(dāng)前的溫度值,最后一位是小數(shù)。
; 如果要移植這個(gè)程序中讀取DS18B20的相關(guān)函數(shù),您需要修改以下幾個(gè)內(nèi)容
; 根據(jù)您所選擇晶振和我們板子上的晶振6M的關(guān)系,重新計(jì)算
; 初始化和讀取,寫入三個(gè)函數(shù)延時(shí)相關(guān)部分系數(shù),用*標(biāo)出

; 這個(gè)溫度測試程序的溫度精度是0.5C。


beep equ p3.7

segdata equ p0      ;數(shù)據(jù) 輸出
sege    equ p2.7    ;顯示 選中
segb    equ p2.6    ;位 選
segd    equ p2.5    ;段 選

tmp0   equ 40h
tmp1   equ 41h
tmp2   equ 42h
tmp3   equ 43h
tmp    equ 44h
buf    equ 45h

dstmp   bit p3.2     ;DS18B20在外部中斷T0口,連器件的時(shí)候注意了
;我們活動(dòng)式設(shè)計(jì),您只要把DS18B20三只腳分開,準(zhǔn)確識別三只腳的含義
;(這在我們光盤中提供了說明文件),然后分別對應(yīng),插入面板下主芯片下
;方的擴(kuò)展座對應(yīng)的引腳即可

        ORG 0000H
        AJMP MAIN
        
        ORG 0030H
MAIN:
        MOV SP,#30H
        clr beep
        
        LCALL GET_TEMP   ;首先獲得溫度值
        
        mov tmp,r7       ; R7是溫度的低位
        
        clr c
        mov a,r6         ; R6是溫度的高位
        rrc a
        mov r6,a
        
        mov a,r7
        rrc a
        mov r7,a         ;完成一次移位
        
        mov a,r6
        rrc a
        mov r6,a
        
        mov a,r7
        rrc a
        mov r7,a         ;完成2次移位
        
        mov a,r6
        rrc a
        mov r6,a
        
        mov a,r7
        rrc a
        mov r7,a         ;完成3次移位,這樣以后便與計(jì)算        
        
        mov a,r7
        mov b,#2
        div ab
        
        mov r0,a   ;高位商
        mov r1,b   ;余數(shù)
        
        mov b,#10
        div ab
        mov tmp1,b   ;個(gè)位        
        
        mov b,#10
        div ab
        mov tmp2,b   ;十位
        mov tmp3,a   ;百位
        
        clr c  
              
        mov a,tmp
        rlc a
        mov tmp,a
        mov a,r1
        rlc a
        mov r1,a         ;小數(shù)操作
        
        mov a,tmp
        rlc a
        mov tmp,a
        mov a,r1
        rlc a
        mov r1,a         ;小數(shù)  
        
        mov a,tmp
        rlc a
        mov tmp,a
        mov a,r1
        rlc a
        mov r1,a         ;小數(shù)擴(kuò)大16倍
        
        mov dptr,#ft
        movc a,@a+dptr
        mov tmp0,a
        
        mov a,tmp3
        jz noe        ;0消隱
        mov b,#3
        acall DISPLAY ;顯示百位  
        
noe:   mov a,tmp2
        mov b,#2
        acall DISPLAY ;在第二位顯示十位          
        
        mov a,tmp1
        add a,#16
        mov b,#1      ;第1位顯示個(gè)位,帶小數(shù)點(diǎn)
        acall DISPLAY                            
        
        mov a,tmp0
        mov b,#0      ;顯示小
4樓: >>參與討論
dyt88
謝了.
謝謝樓上兩位了.不知還有沒有人有程序?最好帶電路圖的.謝了.

5樓: >>參與討論
lzq1980
你說的是C51嗎?
請問C51是什么東西呀?我這里有uvision2 和C51。請問怎么使用?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
源程序大公開-16X2字符液晶8Bit接口程序(注釋應(yīng)該算詳細(xì)了)
各位大哥,我想學(xué)單片機(jī)C語言,請各位給點(diǎn)見議?
高手請進(jìn)
求救!有沒有辦法讀出Mask芯片內(nèi)的代碼?
求救--89c51和29f040之間的接線圖,以及匯編程序
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號