Home >Documents >Modula t Mega 8535

Modula t Mega 8535

Date post:20-Jan-2016
Category:
View:34 times
Download:0 times
Share this document with a friend
Description:
tutorial
Transcript:

Modul Belajar Atmega8535 by Kennedy

Modul Belajar Atmega8535 by Kennedy2013

AVR The IntroductionAVR adalah single-chip mikrokontroler ber-arsitektur 8-bit RISC yang dikembangkan oleh Atmel pada tahun 1996.RISC, Reduced Instruction Set Computer, adalah teknologi kombinasi antara hardware (perangkat keras) dan software (perangkat lunak) pada mikrokontroler / mikroprosesor yang bertujuan untuk mempercepat mikrokontroler / mikroprosesor dalam melaksanakan suatu instruksi. Dalam RISC, suatu instruksi dibuat sederhana agar CPU dalam mikrokontroler / mikroprosesor dapat melaksanakan instruksi tersebut dengan hanya 1-clock oscillator, yang berarti lebih cepat dan lebih efisien dibandingkan teknologi pendahulunya CISC, Complex Instruction Set Computer.Diyakini bahwa dasar dari arsitektur AVR pada awalnya disusun oleh dua mahasiswa dari Norwegian Institute of Technology (NTH), Alf-Egil Bogen dan Vegard Wollan.Arsitektur mikrokontroler AVR kemudian dibeli dan dikembangkan oleh Atmel. Namun menurut Atmel, nama AVR tidak memiliki makna secara bahasa dan bukanlah singkatan dari apapun.

Gambar 1. Contoh Mikrokontroler AVRSalah satu keluaran pertama dari produk mikrokontroler AVR milik Atmel yang dijual bebas adalah AT90S8515, yang merupakan chip dengan kemasan 40-pin DIP dengan pin I/O yang sama persis dengan mikrokontroler pendahulunya 8051, hanya saja memiliki aktivasi RESET yang berlawan (8051 memiliki aktivasi RESET dengan logika 1, sedangkan AT90S8515 aktivasi RESET berlogika 0)Mikrokontroler AVR secara umum dibagi menjadi 4 keluarga: tinyAVR; seri ATtiny 0.58 kB memori program 632-pin pada chip-nya megaAVR; seri ATmega 4256 kB memori program 28100-pin pada chip-nya XMEGA; seri ATxmega 16384 kB memori program 4464100-pin pada chip-nya Aplication specific AVR; AVR dengan aplikasi khusus megaAVR dengan fitur khusus yang tidak ditemukan di keluarga AVR yang lainya, seperti kendali LCD, kendali USB, dll.

AVRATmega8535

Gambar 2. Atmega 8535ATmega8535. Notasi tersebut adalah representasi dari sebuah mikrokontroler yang merupakan salah satu anggota keluarga AVR. Adalah ATMEL, perusahaan yang memproduksinya. Dengan arsitektur 8-Bit RISC berdaya rendah (Low-Power), dan fitur-fitur unggulan lainnya, ATmega8535 sangat efisien dan efektif untuk dijadikan pengendali utama dalam suatu sistem kendali.ATmega8535 memiliki kembaran, yaitu ATmega8535L. Perbedaannya hanya terletak dari besar minimal tegangan sumber yang diperlukan untuk berfungsi dan kecepatan maksimal dari tiap chip tersebut, seperti yang terlihat pada Fitur-Fitur Mikrokontroler AVR ATmega8535(L):Fitur-Fitur Mikrokontroler AVR ATmega8535(L):130 instruksi dengan mayoritas hanya 1 clock-cycle100,000 kali kemampuan program-ulang32 x 8-bit register (r0 r31)8K Byte Flash-ROM512 Byte EEPROM512 Byte Internal SRAM4 x 8-bit Programmable I/O (Port A, Port B, Port C, Port D)8-Kanal ADC 10-bit pada Port ADua buah 8-bit Timer/Counters dengan Separate Prescalers dan Compare ModesSatu buah 16-bit Timer/Counter dengan Separate Prescalers, Compare Mode, dan Capture ModeReal Time Counter (RTC) dengan Osilator yang terpisah4-Kanal PWMProgrammable Serial USARTMaster/Slave SPI Serial Interface Tegangan Sumber 2.7 5.5V untuk ATmega8535L 4.5 5.5V untuk ATmega8535 Kecepatan Maksimal 0 8 MHz untuk ATmega8535L 0 16 MHz untuk ATmega8535

AVR LEDControlPada dasarnya setiap mikrokontroler memiliki bahasa dasar atau ASSEMBLER yang khusus diperuntukkan baginya. Begitu-pun dengan AVR. Namun berdasarkan pandangan kami, bahasa ASSEMBLER AVR lebih rumit untuk dipelajari dibandingkan dengan bahasa yang tingkatannya lebih tinggi, seperti bahasa Basic ataupun bahasa C. Karena itu, penjelasan kali ini adalah penggunaan bahasa Basic dengan menggunakan BASCOM sebagai program compiler-nya.

Gambar 3. Skematik Sismin Atmega8535 dengan Led ControllerMateri kali ini adalah pengendalian 8 buah LED yang dirangkaikan pada PORTC dari ATmega8535(L) (bisa pula untuk IC ATmega16(L), ATmega32(L), ATmega163(L), ATmega323(L)) seperti yang terlihat pada gambar berikut.Untuk memudahkan pembelajaran, sebaiknya menggunakan modul kami DI-Smart AVR System sebagai media praktik. Adapun langkah-langkah dalam pembuatan sistemnya adalah sebagai berikut:1. Modul yang dibutuhkan DI-Smart AVR System. (Merangkai komponen-komponen sesuai dengan gambar skematik rangkaian).2. Hubungkan adaptor DC pada JACK-DC. Tetapkan tegangan adaptor pada kisaran 9 s/d 12 VDC. Pastikan kutub positif berada pada bagian dalam. (Jika anda menyusun dari awal, maka pastikan sistem mendapatkan tegangan 5V [VCC = 5V]).3. Atur jumper JP3 pada posisi LED CONNECTED pada DI-Smart AVR System.4. Unduh skrip program berikut (menggunakan BASCOM):$regfile = m8535.dat Lokasi source code BASCOM untuk chip ATmega8535$crystal = 4000000 Sesuai dengan xtal0 = crystal yang digunakan pada rangkaian = 4MHz Jika anda menggunakan DI-Smart AVR System, maka crystal = 8000000 = 8MHz

Config Portc = Output Deklarasi PORTC sebagai output = keluaran LED

Membuat seluruh LED berkedipPortc = 0 Nilai desimal 0 = seluruh pin Portc berlogika 0 = LED MENYALAWait 1 Waktu tunda = 1 detikPortc = 255 Nilai desimal 255 = seluruh pin Portc berlogika 1 = LED PADAMWait 1

Portc = &B1111_1110 LED L0 = menyala (&B = Biner)

DoRotate Portc , Left , 1 Data pada Portc digeser ke kiri sebanyak 1-bitWaitms 500 Tunda selama 500msLoop Loop seterusnyaEnd*Modul Depok Instruments yang Memudahkan Pembelajaran: DI-Smart AVR System DI-Smart AVR ISP DI-Low Cost USB AVR ISP (USB AVR Downloader)

AVR Membaca Input ADC dan Ditampilkan diKomputer

Gambar 4. Skematik Sismin Atmega8535 untuk membaca Input ADCMateri kali ini adalah membaca input tegangan analog (0-5V) pada PORTA.0 dari ATmega8535(L) (bisa pula untuk IC ATmega16(L), ATmega32(L), ATmega163(L), ATmega323(L)) kemudian mengirimkan data tersebut ke serial komputer (DB9) untuk dibaca. Rangkaian yang diperlukan seperti yang terlihat pada gambar berikut.

Untuk memudahkan pembelajaran, sebaiknya menggunakan modul kami, DI-Smart AVR System, sebagai media praktik. Adapun langkah-langkah dalam pembuatan sistemnya adalah sebagai berikut:1. Modul yang dibutuhkan DI-Smart AVR System, DI-Smart Extension Board, dan DI-Cable Serial. (Merangkai komponen-komponen sesuai dengan gambar skematik rangkaian).2. Hubungkan adaptor DC pada JACK-DC. Tetapkan tegangan adaptor pada kisaran 9 s/d 12 VDC. Pastikan kutub positif berada pada bagian dalam. (Jika anda menyusun dari awal, maka pastikan sistem mendapatkan tegangan 5V [VCC = 5V]).3. Hubungkan DI-Smart Extension Board dengan PORTA DI-Smart AVR System.4. Hubungkan input analog dengan salah satu terminal pada DI-Smart Extension Board (pada contoh digunakan terminal PORTA.0).5. Hubungkan DI-Cable Serial dengan port serial dari DI-Smart AVR System dan komputer.6. Atur jumper JP1 pada posisi RXD SERIAL PORT.7. Atur jumper JP2 pada posisi TXD SERIAL PORT.8. Aktifkan program Hyper Terminal pada PC/LAPTOP, baudrate = 9600 bps.9. Unduh skrip program berikut (menggunakan BASCOM atau yang CVAVR):PROGRAM BASCOM:$regfile = m8535.dat Lokasi source code BASCOM untuk chip ATmega8535$crystal = 4000000 Sesuai dengan xtal0 = crystal yang digunakan pada rangkaian = 4MHz Jika anda menggunakan DI-Smart AVR System, maka crystal = 11059200 = 11.0592MHz$baud = 9600 penge-set-an baudrate, dan yang digunakan adalah 9600 bps

inisialisasi ADC:Config Adc = Single , Prescaler = AutoStart AdcDim Data_adc As Word memesan variable Data_adc bertipe wordDoData adc pada kanal-0 (PORTA.0) disimpan dalam variabel Data_adcData_adc = Getadc(0)

Kirim Data_adc ke serial port,chr(13) meletakkan kursor pada posisi paling kiri tampilanPrint Data_adc ; Chr(13);Waitms 500 Tunda selama 500ms (0.5 detik)Loop EndPROGRAM CVAVR:/*****************************************************This program was produced by theCodeWizardAVR V2.03.5 EvaluationAutomatic Program Generator Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.comProject :Version :Date : 20/01/2011Author : Freeware, for evaluation and non-commercial use onlyCompany :Comments:Chip type : ATmega8535Program type : ApplicationClock frequency : 8,000000 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 128*****************************************************/#include // Standard Input/Output functions#include #include #define ADC_VREF_TYPE 000// Read the AD conversion resultunsigned int read_adc(unsigned char adc_input){ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);// Delay needed for the stabilization of the ADC input voltagedelay_us(10);// Start the AD conversionADCSRA|=040;// Wait for the AD conversion to completewhile ((ADCSRA & 010)==0);ADCSRA|=010;return ADCW;}// Declare your global variables hereunsigned int dataadc;void main(void){// Declare your local variables here// Input/Output Ports initialization// Port A initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=TPORTA=000;DDRA=0xff;// USART initialization// Communication Parameters: 8 Data, 1 Stop, No Parity// USART Receiver: Off// USART Transmitter: On// USART Mode: Asynchronous// USART Baud Rate: 9600UCSRA=000;UCSRB=008;UCSRC=086;UBRRH=000;UBRRL=033;// Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: OffACSR=080;SFIOR=000;// ADC initialization// ADC Clock frequency: 921,600 kHz// ADC Voltage Reference: AREF pin// ADC High Speed Mode: Off// ADC Auto Trigger Source: NoneADMUX=ADC_VREF_TYPE & 0xff;ADCSRA=083;SFIOR&=0xEF;while (1){// Place your code heredataadc=read_adc(0);printf(%d\r\n,dataadc);delay_ms(500);};}*Modul Depok Instruments yang Memudahkan Pembelajaran: DI-Smart AVR System DI-Smart Extension Board DI-Smart AVR ISP DI-Low Cost USB AVR ISP (USB AVR Downloader)

AVR Menampilkan Karakter keLCDMateri kali ini adalah pengendalian LCD 16X2 karakter yang dirangkaikan pada PORTB dari ATmega8535(L) (bisa pula untuk IC ATmega16(L), ATmega32(L), ATmega163(L), ATmega323(L)) seperti yang terlihat pada gambar berikut.

Gambar 5. Skematik Sismin Atmega8535 untuk menampilkan karakter ke LCDUntuk memudahkan pembelajaran, sebaiknya menggunakan modul kami DI-Smart AVR System dan DI-Smart LCD16X2 Board sebagai media praktik. Adapun langkah-langkah dalam pembuatan sistemnya adalah sebagai berikut:1. Modul yang dibutuhkan DI-Smart AVR System dan DI-Smart LCD16X2 Board. (Merangkai komponen-komponen sesuai dengan gambar skematik rangkaian).2. Hubungkan DI-Smart LCD16X2 Board pada PORTC DI-Smart AVR System.3. Hubungkan adaptor DC pada JACK-DC. Tetapkan tegangan adaptor pada kisaran 9 s/d 12 VDC. Pastikan kutub positif berada pada bagian dalam. (Jika anda menyusun dari awal, maka pastikan sistem mendapatkan tegangan 5V [VCC = 5V]).4. Unduh skrip program berikut (menggunakan BASCOM):$regfile = m8535.dat Lokasi source code BASCOM untuk chip ATmega8535$crystal = 4000000 Sesuai dengan xtal0 = crystal yang digunakan pada rangkaian = 4MHz Jika anda menggunakan DI-Smart AVR System, maka crystal = 8000000 = 8MHzConfig Lcd = 16 * 2 inisialisasi LCD 16X2Const _lcdport = Portb LCD port = portbConst _lcdddr = DdrbConst _lcdin = PinbConst _lcd_e = 2 LCD enable = portb.2Const _lcd_rw = 1 LCD rw = portb.2Const _lcd_rs = 0 LCD rs = portb.2Cursor OffDo Looping ForeverCls bersihkan layar LcdWaitms 500 tunda 500msLcd Smart LCD16X2 Smart LCD16X2 di baris atasLowerline set Cursor di kolom paling kiri, baris bawahLcd DepokInstruments DepokInstruments di baris bawahWaitms 1000 delay 1000msLoop End*Modul Depok Instruments yang Memudahkan Pembelajaran: DI-Smart AVR System DI-Smart LCD16X2 Board DI-Smart AVR ISP DI-Low Cost USB AVR ISP (USB AVR Downloader)

Source Code CVAVR for RTCDS1307#include #include // I2C Bus functions#asm.equ __i2c_port=012 ;PORTD.equ __sda_bit=5.equ __scl_bit=4#endasm#include // DS1307 Real Time Clock functions#include // Alphanumeric LCD Module functions#asm.equ __lcd_port=018 ;PORTB#endasm#include // Declare your global variables hereunsigned char jm, mn, dt, tg, bl, th, bstr[16];void main(void){// Declare your local variables here// Input/Output Ports initialization// Port A initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=TPORTA=000;DDRA=000;// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=TPORTB=000;DDRB=000;// Port C initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=TPORTC=000;DDRC=000;// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=TPORTD=000;DDRD=000;// Timer/Counter 0 initialization// Clock source: System Clock// Clock value: Timer 0 Stopped// Mode: Normal top=FFh// OC0 output: DisconnectedTCCR0=000;TCNT0=000;OCR0=000;// Timer/Counter 1 initialization// Clock source: System Clock// Clock value: Timer 1 Stopped// Mode: Normal top=FFFFh// OC1A output: Discon.// OC1B output: Discon.// Noise Canceler: Off// Input Capture on Falling Edge// Timer 1 Overflow Interrupt: Off// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: OffTCCR1A=000;TCCR1B=000;TCNT1H=000;TCNT1L=000;ICR1H=000;ICR1L=000;OCR1AH=000;OCR1AL=000;OCR1BH=000;OCR1BL=000;// Timer/Counter 2 initialization// Clock source: System Clock// Clock value: Timer 2 Stopped// Mode: Normal top=FFh// OC2 output: DisconnectedASSR=000;TCCR2=000;TCNT2=000;OCR2=000;// External Interrupt(s) initialization// INT0: Off// INT1: Off// INT2: OffMCUCR=000;MCUCSR=000;// Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=000;// Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: OffACSR=080;SFIOR=000;// I2C Bus initializationi2c_init();// DS1307 Real Time Clock initialization// Square wave output on pin SQW/OUT: Off// SQW/OUT pin state: 0rtc_init(0,0,0);// LCD module initializationlcd_init(20);/*****setup time and date*****/jm=12;mn=11;dt=00;rtc_set_time(jm,mn,dt);tg=26;bl=10;th=11;rtc_set_date(tg,bl,th);/*****************************/while (1){// Place your code herertc_get_time(&jm,&mn,&dt);rtc_get_date(&tg,&bl,&th);sprintf(bstr,Time %02d:%02d:%02d,jm,mn,dt);lcd_gotoxy(0,0);lcd_puts(bstr);sprintf(bstr,Date %02d-%02d-%02d,tg,bl,th);lcd_gotoxy(0,1);lcd_puts(bstr);};}

Rangkaian Minimum ATmega 8535/16/32Diposting oleh : acep sopianKategori: Modul Robotic - Dibaca: 2727 kaliDalam merancang sistem minimum mikrokontroler diperlukan bebarapa komponen antara lain: 1. Mikrokontroller ATmega8535/16/32 berfungsi sebagai chip2. Socket 2x20 berfungsi sebagai tempat chip3. Resistor 4K7 berfungsi sebagai resistor pull up untuk tombol reset4. Push button sebagai tombol reset5. Capasitor 100uf6. Capasitor 22pf7. Xtall (Crystal) untuk osilasi eksternal

Agar mikrokontroler bekerja tentunya memerlukan supply tegangan dan tegangan kerja untuk mikrokontroller itu kurang lebih sebesar 5 volt, jadi kita memerlukan lagi rangkain power supply untuk supply tegangan.

List komponen : 1. Dioda Bridge sebagai penyearah2. LED sebagai indikator3. Resistor 1K4. Capasitor 2200 uf5. IC Regulator 7805 sebagai penstabil tegangan keluaranSetelah semua sudah lengkap selanjutnya dapat kamu buat design layout untuk kita cetak pada papan PCB seperti gambar di bawah:

Rangkaian Minimum Sistem AVRAtmega8535Posted on 11/05/2013 by mikroelektroniika Dalam suatu project atau rangkaian elektronika AVR mikrokontroler akan berfungsi dengan baik jika dirangkai dengan sistem minimum pada chip AVR agar bekerja dengan optimal. Pada postingan terdahulu, digambarkan konfigurasi pin mikrokontroler Atmega8535. Pada pin 12 dan pin 13 adalah pin Crystal eksternal yang harus dirangkaikan dengan Crystal sebagai sumber clock eksternal pada chip Atmega8535. Dan pada pin 9 adalah pin RESET yang harus dirangkaikan dengan rangkaian reset, yang berfungsi sebagai pe-RESET program apabila terjadi error saat program berjalan.Komponen yang dibutuhkan untuk rangkaian sumber clock eksternal adalah : 1 buah Crystal 8 MHz atau 11.0592 MHz sesuai dengan kebutuhan chip AVR 2 buah Kapasitor 22nFDan komponen yang dibutuhkan untuk rangkaian Reset adalah : 1 buah Resistor 10K 1 buah Kapasitor Elco 10uF 1 buah Push Button sebagai tombol ResetUntuk rangkaiannya digambarkan sebagai berikut :

http://mikroelektroniika.wordpress.com/2013/05/11/rangkaian-minimum-sistem-avr-atmega8535/http://www.robotbandung.com/berita-19-rangkaian-minimum-atmega-85351632.htmlhttp://depokinstruments.com/tag/rangkaian-sistem-minimum-avr-atmega8535/

Source Code CVAVR For DI-Smart KEY4X4 Input (KEYPAD4X4)#include #include // Alphanumeric LCD Module functions#asm.equ __lcd_port=018 ;PORTB#endasm#include #define pinkey PINC#define portkey PORTC// Declare your global variables herechar datakey, buffer;//program pembacaaan key apa yang ditekan oleh user//keypad yang digunakan mengunakan metode scanningchar get_key(void){buffer=-';//portkey=0xFF;delay_ms(1);portkey.4=0;delay_us(1); //untuk memberikan waktu pada mikrokontrolller mencapture penekananif (pinkey.0==0) buffer=1;else if (pinkey.1==0) buffer=2;else if (pinkey.2==0) buffer=3;else if (pinkey.3==0) buffer=A';portkey.4=1;portkey.5=0;delay_us(1);if (pinkey.0==0) buffer=4;else if (pinkey.1==0) buffer=5;else if (pinkey.2==0) buffer=6;else if (pinkey.3==0) buffer=B';portkey.5=1;portkey.6=0;delay_us(1);if (pinkey.0==0) buffer=7;else if (pinkey.1==0) buffer=8;else if (pinkey.2==0) buffer=9;else if (pinkey.3==0) buffer=C';portkey.6=1;portkey.7=0;delay_us(1);if (pinkey.0==0) buffer=*';else if (pinkey.1==0) buffer=0;else if (pinkey.2==0) buffer=#';else if (pinkey.3==0) buffer=D';portkey.7=1;return buffer;}//fungsi untuk mendeteksi tombol selesai di tekanvoid key_up (void){portkey=0x0F;delay_us(1);while (pinkey != 0x0F);delay_ms(10);}void main(void){// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=TPORTB=000;DDRB=000;// Port C initialization// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In// State7=1 State6=1 State5=1 State4=1 State3=P State2=P State1=P State0=PPORTC=0xFF;DDRC=0xF0;// LCD module initializationlcd_init(16);//program utama menampilkan penekanan tombol ke LCDwhile (1)lcd_clear();{// Place your code heredatakey=get_key();if (datakey != -) lcd_putchar(datakey); // key yang ditekan ditampilkan di LCDkey_up(); // tunggu sd key di-release (dilepas)delay_ms(100);};}

Source Code BASCOM-AVR forSHT11$regfile = m8535.dat$crystal = 11059200$lib lcd4busy.lib$baud = 9600Const _lcdport = PortaConst _lcdddr = DdraConst _lcdin = PinaConst _lcd_e = 2Const _lcd_rw = 1Const _lcd_rs = 0Ddrc = 255Portc = 255Ddra = 255Porta = 255Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.3Config Lcd = 16 * 2Config Adc = Single , Prescaler = Auto , Reference = AvccStart AdcDim Ctr As ByteDim Dataword As WordDim Command As ByteDim Dis As String * 20Dim Calc As SingleDim Calc2 As SingleDim Rhlinear As SingleDim Rhlintemp As SingleDim Tempc As SingleDim Tempf As SingleDim A As Word , I As IntegerSck Alias Portc.0Dataout Alias Portc.1Datain Alias Pinc.1Declare Sub Getit()Declare Sub ConnectionresetCall ConnectionresetConst C1 = -4Const C2 = 0.0405Const C3 = -0.0000028Const T1c = 0.01Const T2 = 0.00008Const T1f = .018DoClsDo continually read the tempfature and humidityCommand = &B00000011Call Getit Get the temperature, puts result in dataword for usTempf = T1f * DatawordTempf = Tempf 40Tempc = T1c * Dataword get celcius for later calculations and for the rest of the worldTempc = Tempc 40Dis = Fusing(tempc , ###.##)Print Temp = ; Dis ; CLcd Temp = ; Dis ; Chr(0) ; CPortc = TempcReset Portc.7Porta = TempcReset Porta.0Waitms 250Waitms 250Command = &B00000101Call Getit get the humidityCalc = C2 * DatawordCalc2 = Dataword * Dataword that 2 in the datasheet sure looked like a footnote for a couple days, nope it means squared!Calc2 = C3 * Calc2Calc = Calc + C1Rhlinear = Calc + Calc2Dis = Fusing(rhlinear , ##.##)Print Humidity adjusted for linear = ; DisCalc = T2 * DatawordCalc = Calc + T1cCalc2 = Tempc 25Calc = Calc2 * CalcRhlintemp = Calc + RhlinearDis = Fusing(rhlintemp , ##.##)Print Humidity adjusted for temperature = ; DisPrintLocate 2 , 1Lcd Humi = ; Dis ; %Portc = RhlintempSet Portc.7Porta = RhlintempSet Porta.7Waitms 250Waitms 250ClsLoopSub Connectionreset()Ddrc = &B11111111 all port b are outputConfig Pinc.0 = Output sckConfig Pinc.1 = Output datainSet DataoutFor Ctr = 1 To 10Set SckWaitms 2Reset SckWaitms 2Next CtrSet SckReset DataoutReset SckSet SckSet DataoutReset SckEnd SubSub Getit()Local Datavalue As WordLocal Databyte As Bytestart with transmission startSet SckReset DataoutReset SckSet SckSet DataoutReset Scknow send the commandShiftout Dataout , Sck , Command , 1Ddrc = &B1111_1101 datain is now inputConfig Pinc.1 = Input datainSet Sck click one more offReset SckWaitus 10 no idea why, but it doesnt work without it!Bitwait Pinc.1 , Reset wait for the chip to have data readyShiftin Datain , Sck , Databyte , 1 get the MSBDatavalue = DatabyteDdrc = &B1111_1111Config Pinc.1 = OutputReset Dataout this is the tricky part- Lots of hair pulling- have to tick the ack!Set SckReset SckDdrc = &B1111_1101 datain is now inputConfig Pinc.1 = InputShiftin Datain , Sck , Databyte , 1 get the LSBShift Datavalue , Left , 8Datavalue = Datavalue Or Databytedont tick the clock or ack since we dont need the CRC value, leave it hanging!Dataword = DatavalueDdrc = &B1111_1111Config Pinc.1 = OutputReset DataoutSet SckReset SckDdrc = &B1111_1101 datain is now inputConfig Pinc.1 = InputShiftin Datain , Sck , Databyte , 1 not using the CRC value for now- cant figure it out! Anybody know how to impliment?Print CRC value was ; DatabyteDdrc = &B1111_1111Config Pind.1 = OutputSet DataoutSet SckReset SckEnd Sub

Source : depokinstrument.comPage 20