Microprocessors and Programming Department of Mechatronics Engineering Lecture 1 1 Microprocessors and Programming Dr. Kadir ERKAN Department of Mechatronics Engineering Fall : 2017 9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
Synchronous communication When using the synchronous communication – the information is transmitted from the transmitter to the receiver: in sequence bit after bit with fixed baud rate and the clock frequency is transmitted along with the bits That means that the transmitter and the receiver are synchronized between them by the same clock frequency. The clock frequency can be transmitted along with the information, while it is encoded in the information itself, or in many cases there is an additional wire for the clock. This type of communication is faster compare to the asynchronous communication since it is "constantly transmitting” the information, with no stops. 9/11/2018
Asynchronous communication When using the asynchronous communication - the transmitter and the receiver refraining to transmit long sequences of bits because there isn't a full synchronization between the transmitter, that sends the data, and the receiver, that receives the data. In this case, the information is divided into frames, in the size of byte. Each one of the frame has: “Start” bit marks the beginning of a new frame. “Stop” bit marks the end of the frame. Frames of information must not necessarily be transmitted at equal time space, since they are independent of the clock. 9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
"Bir şeyin ters gitme olasılığı varsa, ters gidecektir." Murphy Kanunları , Amerikalı mühendis Edward A. Murphy, jr. tarafından, başarısızlıklar ve hata kaynaklarının karmaşık sistemlerde incelenmesi üzerine ortaya konan özdeyişlerdir. "Bir şeyin ters gitme olasılığı varsa, ters gidecektir." "Bir şeyin birkaç şekilde ters gitme olasılığı varsa, hep en kötü sonuç doğuracak şekilde ters gidecektir." "Bir şeyin ters gidebileceği olasılıkları engelleseniz bile, anında yeni bir olasılık ortaya çıkacaktır." "Bir şeyin olma olasılığı, isteme olasılığı ile ters orantılıdır." "Er ya da geç olası en kötü koşullar zincirlemesi vuku bulacaktır." "Ne zaman bir şeyden vazgeçseniz, vazgeçtiğiniz o şey size geri gelir." "Olmuyorsa zorlayın, kırılırsa zaten değişmesi gerekirdi." "Ne kadar beklersen bekle istenmediği zaman gelecektir." "Çözülen her problem yeni problemler yaratır." "Her şey yolunda gidiyorsa, kesin bir terslik vardır." 9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
9/11/2018
USART in PIC The Universal Synchronous Asynchronous Receiver Transmitter (USART) module is one of the two serial I/O modules. (USART is also known as a Serial Communications Interface or SCI.) The USART can be configured as a full-duplex asynchronous system that can communicate with peripheral devices, such as CRT terminals and personal computers, or it can be configured as a half-duplex synchronous system that can communicate with peripheral devices, such as A/D or D/A integrated circuits, serial EEPROMs, etc. The USART can be configured in the following modes: • Asynchronous (full-duplex) • Synchronous – Master (half-duplex) • Synchronous – Slave (half-duplex) 9/11/2018
9/11/2018
9/11/2018
TXSTA: TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS 98h) 9/11/2018
RCSTA: RECEIVE STATUS AND CONTROL REGISTER (ADDRESS 18h) 9/11/2018
interrupts #USE RS232(constant1, constant2,…) This directive tells the compiler the baud rate and pins used for serial I/O. This directive takes effect until another RS232 directive is encountered. The #USE DELAY directive must appear before this directive can be used. This directive enables use of built-in functions such as GETC, PUTC, and PRINTF. The functions created with this directive are exported when using multiple compilation units. To access the correct function use the stream identifier. When using parts with built-in SCI and the SCI pins are specified, the SCI will be used. If a baud rate cannot be achieved within 3% of the desired value using the current clock rate, an error will be generated. #INT_RDA RS232 receive data available #INT_TBE RS232 transmit buffer empty interrupts 9/11/2018
#USE RS232 9/11/2018
set_uart_speed( ) Changes the baud rate of the built-in hardware RS232 serial port at run-time. This function is only available on devices with a built in UART. set_uart_speed (baud, [stream, clock]) baud is a constant representing the number of bits per second. stream is an optional stream identifier. clock is an optional parameter to indicate what the current clock is if it is different from the #use delay value // Set baud rate based on setting of pins B0 and B1 switch( input_b() & 3 ) { case 0 : set_uart_speed(2400); break; case 1 : set_uart_speed(4800); break; case 2 : set_uart_speed(9600); break; case 3 : set_uart_speed(19200); break; } 9/11/2018
RS232 Serial Port Functions 9/11/2018
Example Code 9/11/2018
Example Code /****************************************************** RS232 Serial Communication Sample *******************************************************/ #include <16f877.h> #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD #use delay (clock=4000000) #define use_portb_lcd TRUE #include <lcd.c> #use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1) char klavye[80]; #int_rda void serihaberlesme_kesmesi () { disable_interrupts(int_rda); output_high(pin_c5); gets(klavye); printf("\n\rYazdiginiz Metin> %s\n",klavye); printf(lcd_putc,"\f%s",klavye); output_low(pin_c5); printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>"); } 9/11/2018
Example Code void main ( ) { setup_psp(PSP_DISABLED); setup_timer_1(T1_DISABLED); … output_low(pin_c5); lcd_init(); printf("\r**************** Merhaba *********************"); printf("\n\rKlavyeden girdiginiz bilgiler LCD'de gorunecektir\n\n"); printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>"); enable_interrupts(GLOBAL); while(1) enable_interrupts(int_rda); } 9/11/2018
Parallel Slave Port The parallel slave port on the PIC16F877 chip is designed to allow parallel communications with an external 8-bit system data bus or peripheral. Port D provides the 8 I/O data pins, and Port E three control lines: Read, Write, and Chip Select. If data are to be input to the port, the pin data direction is set accordingly and data presented to Port D. The chip select input must be set low and the data latched into the port data register by taking the write line low. Conversely, data can be read from the port using the read line. Either operation can initiate an interrupt. 9/11/2018
Parallel Slave Port Registers 9/11/2018
Parallel Slave Port Pin Structure 9/11/2018
9/11/2018
setup_psp(mod) Configures various options in the PMP/EPMP module. The options are present in the device.h file and they are used to setup the module. The PMP/EPMP module is highly configurable and this function allows users to setup configurations like the Slave mode, Interrupt options, address increment/decrement options, Address enable bits and various strobe and delay options. MOD: PSP_ENABLED PSP_DISABLED 9/11/2018
PSP_INPUT_FULL(), PSP_OUTPUT_FULL(), PSP_OVERFLOW() 9/11/2018
Example Code 9/11/2018
Example Code /****************************************************** PSP Application *******************************************************/ #include <16f877A.h> #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD #use delay (clock=4000000) void main ( ) { setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı … setup_psp(PSP_ENABLED); while (1) { output_b(PSP_DATA); } 9/11/2018
Example Code 9/11/2018
Example Code 9/11/2018