大香蕉大香蕉在线播放-日韩av在线一区中文字幕-日韩熟女熟妇久久精品综合-精品免费视频一区二区三区

技術(shù)熱線: 4007-888-234

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

技術(shù)支持

三個(gè)源程序(設(shè)計(jì)風(fēng)格的比較)

更新時(shí)間: 2019-03-23

十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享三個(gè)源程序(設(shè)計(jì)風(fēng)格的比較)。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。

一:DS1302與PIC16F877接口程序

;================================================ ;DS1302控制子程序 ;================================================= ;程序包括:DS1302初始化,時(shí)間數(shù)據(jù)寫入和讀取程序 ;DS1302_init ;init ds1302 ;Set_DS1302 ;set time to ds1302 ;Get_DS1302 ;get time from ds1302 ;=================================================

;============== 1302定義 =========================================== #DEFINE T_IO PORTE,2 ;1302 I_O #DEFINE T_CLK PORTE,1 ;1302時(shí)鐘 #DEFINE T_RST PORTE,0 ;1302使能位 #DEFINE DS1302_RX 20H ;保存接受的1個(gè)數(shù)據(jù) #DEFINE DS1302_TX 28H ;準(zhǔn)備寫入到DS1302的一個(gè)數(shù)據(jù)

counter equ xxxh temp_cnt equ xxxh

;************************************************** ; DS1302初始化程序 ;************************************************** DS1302_init ;未寫 return ;********************************************************** ;子程序名:Set_DS1302 ;功 能:設(shè)置DS1302 初始時(shí)間,并啟動計(jì)時(shí)。 ;說 明: ;調(diào) 用:Write_byte ;入口參數(shù):初始時(shí)間在:W_Second,W_Minute,W_Hour,W_Day,W_Month,W_Week.W_YearL(地址連續(xù)) ;出口參數(shù):無 ;消耗資源:counter,SecAddr(預(yù)定義) ;設(shè) 計(jì):zhengYanbo 日 期:2005.4.21 ;修 改: 日 期: ;********************************************************** Set_DS1302: bcf T_RST bcf T_CLK bsf T_RST movlw 8eh movwf DS1302_TX ;數(shù)據(jù)發(fā)送寄存器 call Write_byte ;發(fā)送字節(jié) movlw 00h ;WP=0 movwf DS1302_TX call Write_byte bsf T_CLK bcf T_RST movlw W_Second movwf FSR movlw counter,D'7' movlw 80h movwf SecAddr ;秒寫地址 S13021: bcf T_RST bcf T_CLK bsf T_RST movf SecAddr,W movwf DS1302_TX call Write_byte ;寫秒地址 movf INDF,W movwf DS1302_TX call Write_byte ;寫秒數(shù)據(jù) incf FSR incf SecAddr incf SecAddr bsf T_CLK bcf T_RST decfsz counter,F goto S13021 bcf T_RST bcf T_CLK bsf T_RST movlw 8eh ;控制寄存器 movwf DS1302_TX call Write_byte movlw 80h ;控制WP=1,寫保護(hù) movwf DS1302_TX call Write_byte bsf T_CLK bcf T_RST return

;********************************************************** ;子程序名:Get_DS1302 ;功 能:從DS1302 讀時(shí)間 ;說 明: ;調(diào) 用:Write_byte,Read_byte ;入口參數(shù):時(shí)間保存在:R_Second,R_Minute,R_Hour,R_Day,R_Month,R_Week.R_YearL ;出口參數(shù):無 ;消耗資源: counter,SecAddr(預(yù)先定義) ;設(shè) 計(jì):zhengYanbo 日 期:2005.4.21 ;修 改: 日 期: ;********************************************************** Get_DS1302: movlw R_Second ;準(zhǔn)備地址 movwf FSR movlw D'7' movwf counter movlw 81h ;秒讀地址 movwf SecAddr G13021 bcf T_RST bcf T_CLK bsf T_RST movf 

SecAddr,W movwf DS1302_TX call Write_byte call Read_byte movf DS1302_RX,W movwf INDF incf FSR incf SecAddr incf SecAddr bsf T_CLK bcf T_RST decfsz counter,F ;接受7個(gè)數(shù)據(jù) goto G13021 return ;********************************************************** ;功 能:寫1302一字節(jié) (內(nèi)部子程序) ;入口:數(shù)據(jù)預(yù)先在DS1302_TX中 ;出口:無 ;消耗資源:temp_cnt(預(yù)先定義) ;********************************************************** Write_byte movlw D'8' movwf tmp_cnt W_shift rrf DS1302_TX,F ;帶C移位(低位在前) btfsc STATUS,C goto send_1 bcf T_IO goto send_0 send_1 bsf T_IO send_0 bsf T_CLK ;上升沿寫 nop bcf T_CLK decfsz temp_cnt,F goto W_shift return ;********************************************************** ;功 能:讀1302一字節(jié) (內(nèi)部子程序) ;入口:無 ;出口:數(shù)據(jù)保存在DS1302_RX中 ;消耗資源:temp_cnt(預(yù)先定義) ;********************************************************** Read_byte bsf STATUS,RP0 ;bank1 bsf TRISE,2 ;設(shè)置串行數(shù)據(jù)口為輸入 bcf STATUS,RP0 ;bank0 movlw D'8' movwf temp_cnt R_shift btfsc T_IO goto get_1 bcf STATUS,C ;clr c goto get_0 get_1 bsf STATUS,C get_0 rrf DS1302_RX,F bsf T_CLK nop bcf T_CLK ;下降沿讀 decfsz temp_cnt,F goto R_shift

;reset output bsf STATUS,RP0 ;bank1 bcf TRISE,2 ;設(shè)置T_IO為輸出 bcf STATUS,RP0 ;bank0 return 這個(gè)程序一定要,PIC默認(rèn)PORTE為A/D口,切記,切記!改為其他口時(shí)候請參考PIC的DATASHEET ;============================================= ; 初始化端口 ;============================================= Port_Init bsf STATUS,RP0 ;bank1 bcf ADCON1,PCFG0 bsf ADCON1,PCFG1 bsf ADCON1,PCFG2 bcf ADCON1,PCFG3 ;PORTA and PORTE:digital I/O bcf STATUS,RP0 ;bank0 return 二:紅外線發(fā)射與接收一例 ; include

;------------------ STATUS equ 0X03 PORTA equ 0x05 PORTB equ 0x06 W equ 0x00 F equ 0x01 Z equ 0x02 C equ 0x00 ;------------------ n55ks equ 0x0C ; nchks equ 0x0D ; avgIR equ 0x0E ; nsamp equ 0x0F ; tdetect equ 0x10 ; ;------------------------------------ org 0x000 goto start org 0x004 start

movlw b'00000001' tris PORTA ; RA0 紅外輸入 movlw b'00000000' tris PORTB ;RB0 紅外輸出 ; 2us in goto at end of loop blip call doblip ; +6.248ms = 6.250ms total call seeblip ; 6.250ms total call seeblip ; 6.250ms total call seeblip ; 6.250ms total call seeblip ; 6.250ms total call seeblip ; 6.250ms total call seeblip ; 6.250ms total call seeblip ; 6.250ms total nop nop call doblip call seeblip call seeblip call seeblip call seeblip call seeblip call seeblip call seeblip goto blip ; 

;============ 產(chǎn)生 55.5kHz鋸形波(346*18us=6.228ms)====== doblip movlw 0xFF movwf n55ks osc nop call make55k ;RB0 紅外輸出 decfsz n55ks,F goto osc ;-------------- morblip ;6253us DELAY movlw 0x5B movwf n55ks oscmore call make55k ;RB0 紅外輸出 nop decfsz n55ks,F goto oscmore ;------------- call delay8u nop nop nop nop nop bcf PORTB,2 ; RB2 LED指示 return 

;--------------------------- make55k bsf PORTB,0 ;RB0 紅外輸出 call delay8u bcf PORTB,0 return delay8u nop nop nop nop return ;========= 6.250ms =================== seeblip clrf avgIR movlw 0xF9 movwf nchks chk call chkIR ;// decfsz nchks,F goto chk movf avgIR,W ; sublw 0X78 btfss STATUS,C goto detectd bcf PORTB,0 ;RB0 紅外輸出 OFF goto chkdone detectd bsf PORTB,0 nop chkdone call delay8u nop nop nop nop return ;======================== chkIR clrf nsamp btfss PORTA,0 incf nsamp,F btfss PORTA,0 ; RA0 紅外輸入 incf nsamp,F btfss PORTA,0 ; RA0 紅外輸入計(jì)數(shù)值存到nsamp incf nsamp,F btfss PORTA,0 incf nsamp,F btfss PORTA,0 incf nsamp,F btfss PORTA,0 ;共六次 nsamp》5,avgIR增一 incf nsamp,F nop movf nsamp,W sublw 0X04 btfss STATUS,C incf avgIR,F return ;============================ end 

三:18B20通訊程序

這是我在16F877,18F1320,18F1220上通過的18B20程序,18B20主要是延時(shí)問題,這個(gè)解決了,什么都可以通過。 # include # define uch unsigned char # define unint unsigned int # define DQ RB3 //定義18B20數(shù)據(jù)端口 # define DQ_DIR TRISB3 //定義18B20D口方向寄存器 # define W1_INPUT 1 # define W1_OUTPUT 0 # define FALSE 0 # define TRUE !FALSE # define DQ_HIGH() DQ_DIR = W1_INPUT # define DQ_LOW() DQ = 0; DQ_DIR = W1_OUTPUT void delay(unint x) { unint d; d=x; while(--d) {;} } bit reset(void) //初始化18B20 { static bit presence; //定義一個(gè)應(yīng)答信號 DQ_LOW(); delay(70); //置總線為低電平并保持至少480us DQ_HIGH(); //等電阻拉高總線并保持15-60us

delay(5); presence=DQ; //接受應(yīng)答信號 delay(20); //延時(shí)60-240us return(presence); //返回應(yīng)答信號 }

//*************** 讀一位函數(shù)******************//

bit read_bit(void) { static bit i;

DQ_LOW(); DQ_LOW(); DQ_HIGH(); asm("nop"); asm("nop"); asm("nop"); i=DQ;

delay(3); return(i); }

//*********************寫一位函數(shù)****************//

void write_bit(uch bitval) { DQ_LOW(); delay(1);

if (bitval==1) { DQ_HIGH(); 

}

delay(3); DQ_HIGH(); }

//************** 從18B20中讀一個(gè)字節(jié)**************//

uch read_byte(void) { uch i; uch j; uch value=0; for (i=0;i<8;i++) { j=read_bit(); //調(diào)讀位函數(shù) if (j) //如果是 1 置1 { value|=(0x01<<i);>

//*********************向18B20中 寫一個(gè)字節(jié)**************//

void write_byte(uch val) { uch i; uch temp; for (i=0;i<8;i++) { temp=val>>i; temp&=0x01; write_bit(temp); //調(diào)寫位函數(shù) } asm("nop"); asm("nop"); asm("nop"); } main() { uch teml,temh; 

GIE=0; OSCCON=0X6E; //這是18F1320的頻率選擇寄存器 ADCON1=0X7F;

do{ ; }while (reset()) ; //復(fù)位等待從機(jī)應(yīng)答 write_byte(0XCC); //忽略ROM匹配 write_byte(0X44); //發(fā)送溫度轉(zhuǎn)化命令 delay(25000); //延時(shí)100-300us do { ; }while( reset()); //再次復(fù)位,等待從機(jī)應(yīng)答 write_byte(0XCC); //忽略ROM匹配 write_byte(0XBE); //發(fā)送讀溫度命令 teml =read_byte(); //讀出溫度低8 temh=read_byte(); //讀出溫度高8位 DQ_HIGH(); //釋放總線 }

404
返回首頁 |  返回上一頁
插欧美美女逼逼逼逼| 精品一区二区三区乱码中文字幕| 国产精品亚洲综合av| 国产精品免费久久久久久| 日本一区二区在线高清| 看小伙草白女人比的黄片 | 思思夜免费公开视频| 大几吧插进小穴视频| 男人的下面进女人的下面在线观看| 农村胖肥胖女人操逼视频| 成人黄色精品久久app| 中文字幕一高清免费视频| 亚洲精品自拍偷拍| 国产高清在线观看一区二区三区| 亚洲AV天堂一区二区香蕉| 几把日逼嗯嗯视频| 小美女淫荡的视频| 国产日女人视频在线观看| av在线国产哟哟| 粉嫩小穴被大鸡巴操视频在线观看| 操我骚逼抽插视频| 99久久国产综合精品女| 日韩欧美视频在线观看不卡| 久久精品国产亚洲高清| 国产精品亚洲1区2区| 黄色视频网在线观看| 久久精品欧美精品免费观看| 九九热在线精品免费看| 韩国年轻的母亲在线观看| 国产精品亚洲综合av| 天天摸天天添人人澡 | 操美女逼逼色逼网| 中日美女毛5片一区二区三区| 国产剧情使劲操我逼| 亚洲综合欧美日韩| 交换夫妇4中文字幕| 亚洲精品国产人久久| 91精品国产综合久久久蜜| 国产精品久久久久妇| 春宵福利导航91| 人人超级碰青青精品|