1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo thí nghiệm vi xử lý giao tiếp serial port eeprom rtc

29 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo thí nghiệm Vi xử lý giao tiếp serial port EEPROM RTC
Tác giả Đoàn Minh Nhật, Văn Công Bảo
Người hướng dẫn Nguyễn Tuấn Hùng
Trường học Trường Đại học Bách khoa TP.HCM, Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Vi xử lý
Thể loại Báo cáo thí nghiệm
Năm xuất bản 2024
Thành phố TP Hồ Chí Minh
Định dạng
Số trang 29
Dung lượng 765,75 KB

Nội dung

Lưu ý: tần số xung clock cho CPU trên kit thí nghiệm là 8Mhz a Kết nối các tín hiệu SDA và SCL của AVR vào các tín hiệu tương ứng trên module RTC.. Kết nối 1 chân port vào tín hiệu MFP..

Trang 1

KHOA ĐIỆN – ĐIỆN TỬ

Báo cáo thí nghiệm

VI XỬ LÝGVHD: Nguyễn Tuấn Hùng Lớp_Nhóm: L07_01

Trang 2

THAM KHẢO:

BÀI 2

BÀI 1

➢ Hiểu và sử dụng được các ngoại vi UART, I2C, SPI

➢ Hiểu cách giao tiếp với RTC, EEPROM

➢ Tài liệu hướng dẫn thí nghiệm, chương 7, 9, 11

➢ Atmel-2505-Setup-and-Use-of-AVR-Timers_ApplicationNote_AVR130.pdf

a) Kết nối chân TxD và RxD của UART0 vào vào tín hiệu UART_TxD0 và UART_RxD0 trên header J85 ở khối UART.

b) Kết nối dây USB-Serial vào kit thí nghiệm

c) Setup chương trình Hercules với baudrate 9600, 8 bit data, no parity, 1 stop, no handshake d) Sử dụng các ví dụ mẫu trong tài liệu thí nghiệm, viết chương trình khởi động UART0 với các thông số như trên, chờ nhận một byte từ UART0 và phát ngược lại UART0.

e) Dùng Hercules truyền một ký tự xuống kit và quan sát các dữ liệu nhận được để kiểm tra hoạt động chương trình.

(Lưu ý: tần số xung clock cho CPU trên kit thí nghiệm là 8Mhz)

a) Kết nối các tín hiệu SDA và SCL của AVR vào các tín hiệu tương ứng trên module RTC Kết nối 1 chân port vào tín hiệu MFP Kết nối LCD 16x2 vào 1 port của AVR

b) Viết chương trình con khởi động RTC với thời gian hiện hành, cấu hình xung MFP tần số 1Hz Sau đó cứ mỗi cạnh lên của MFP, đọc các giá trị ngày tháng năm giờ phút giây của RTC và cập nhật lên LCD

MỤC TIÊU:

Trang 3

BÀI 4

BÀI 3

BÀI 5

c) Biên dịch chương trình và quan sát LCD để kiểm tra chương trình.

a) Kết nối các tín hiệu MOSI, SCK của port SPI từ AVR đến tín hiệu SDI và CLK của khối thanh ghi dịch Kết nối 2 chân port khác vào tín hiệu nCLR và LATCH Kết nối ngõ ra của thanh ghi dịch vào Bar LED

b) Kết nối các tín hiệu UART như ở bài 1.

c) Viết chương trình nhận 1 giá trị từ UART và xuất ra Bar Led sử dụng SPI.

a) Kết nối các tín hiệu MOSI, MISO, SCK của port SPI từ AVR các tín hiệu tương ứng trên header J80 Kết nối 1 chân port khác vào tín hiệu nCS.

b) Kết nối các tín hiệu UART như ở bài 1.

c) Kết nối 1 port vào Bar LED.

d) Viết chương trình đếm số ký tự nhận được từ UART và xuất ra Bar Led, cứ mỗi lần có 1 byte nhận được, số đếm tăng lên 1 và được ghi vào EEPROM Khi vi xử lý mất điện và có lại, số đếm được đọc ra từ EEPROM và lấy làm giá trị bắt đầu.

a) Kết nối các tín hiệu UART như ở bài 1.

b) Kết nối 1 port vào Bar LED.

c) Viết chương trình đếm số ký tự nhận được từ UART và xuất ra Bar Led, cứ mỗi lần có 1 byte nhận được, số đếm tăng lên 1 và được ghi vào EEPROM nội của AVR Khi vi xử lý mất điện và có lại, số đếm được đọc ra từ EEPROM nội và lấy làm giá trị bắt đầu.

Trang 4

1 Trả lời các câu hỏi

a Với tần số là 8Mhz, baudrate thực tế sẽ sai lệch với mong muốn là 9600 như thế nào?

b Cờ UDRE dùng để làm gì?

+ Cờ UDRE (USART Data Register Empty) được sử dụng để cho biết liệu bộ đệm truyền (UDR)

có sẵn để nhận dữ liệu mới hay không Nếu UDRE là 1, bộ đệm trống và sẵn sàng để ghi Cờ UDRE có thể tạo ra ngắt Data Register Empty UDRE được đặt sau khi thiết bị khởi động lại

để cho biết rằng bộ phát đã sẵn sàng.

c Sự khác nhau giữa hardware UART và software UART (bit-banging UART)

+ UART phần cứng và UART phần mềm (UART bit-banging) là hai cách thực hiện giao tiếp nối

tiếp không đồng bộ trên các thiết bị nhúng.

+ Phần cứng UART là một mạch tích hợp trong vi điều khiển có các thanh ghi và bộ đệm để gửi

và nhận dữ liệu nối tiếp Phần cứng UART có thể hoạt động với nhiều loại giao thức nối tiếp khác nhau và có thể đạt được tốc độ truyền cao Phần cứng UART không ảnh hưởng đến tài nguyên mã và không bị ảnh hưởng bởi các ngắt.

+ Software UART là thư viện phần mềm dùng để điều khiển các chân I/O để tạo xung truyền và

nhận dữ liệu nối tiếp UART phần mềm có thể linh hoạt hơn UART phần cứng vì có thể sử dụng bất kỳ chân nào trên vi điều khiển Tuy nhiên, phần mềm UART cũng có những hạn chế như: chiếm tài nguyên code, không thể hoạt động với tốc độ baud quá cao, phải tắt các ngắt để tránh lỗi thời gian…

d Chân TxD0 và chân RxD0 của UART0 là chân port nào?

BÀI 1

Trang 5

.DEF TX_BUF = R16

; Replace with your application code INIT:

LDI R16, HIGH(RAMEND) OUT SPH, R16LDI R16, LOW(RAMEND) OUT SPL, R16

RCALL USART_INIT MAIN:

LOOP:

RCALL USART_RECEIVE_CHAR CPITX_BUF, 0

BRNE USART_SEND_CHAR RCALL DELAY_500MS RJMP LOOP

;INIT UART0

;CPU CLOCK IS 1MHZ USART_INIT:

;SET BAUDRATE TO 9600BPS WITH 8MHZ CLOCK LDI R16, 0

STS UBRR0H, R16 LDI R16, 51 STS UBRR0L, R16

;SET FRAME FORMAT: 8 DATA BITS, NO PARITY, 1 STOP BIT LDI R16, (1 << UCSZ01) | (1 << UCSZ00)

STS UCSR0C, R16

;ENABLE TRANSMITTER AND RECEIVER LDI R16, (1 << RXEN0) | (1 << TXEN0) STS UCSR0B, R16

RET

;SEND OUT 1BYTE IN R16 USART_SEND_CHAR:

PUSH R17

;WAIT FOR THE TRANSMITTER TO BE READY USART_SEND_CHAR_WAIT:

+ Là chân của PortD

e Atmega324 có bao nhiêu phần cứng UART?

+ Atmega324 có hai UART phần cứng, được gọi là USART0 và USART1 Mỗi UART có các

chân Tx và Rx riêng biệt để gửi và nhận dữ liệu nối tiếp.

2 Mã nguồn chương trình với chú thích

Trang 6

LDS R17, UCSR0A SBRS R17, UDRE0RJMP USART_SEND_CHAR_WAIT STS UDR0, TX_BUFPOP R17

RET

;RECEIVE 1 BYTE IN R16 USART_RECEIVE_CHAR:

PUSH R17

;WAIT FOR THE TRANSMITTER TO BE READY USART_RECEIVE_CHAR_WAIT:

LDS R17, UCSR0A SBRS R17, RXC0RJMP USART_RECEIVE_CHAR_WAIT LDS R16, UDR0

POP R17RETTABLE:

PUSH R17LDI ZL, LOW(TX_DATA << 1) LDI ZH, HIGH(TX_DATA << 1) MOV R16, R17

ADD ZL, R16 BRCC OVERFLOW INC ZH OVERFLOW:

LPM TX_BUF, ZPOP R17

RETDELAY_500MS:

PUSH R19 PUSH R20 PUSH R21 LDI R19, 32LP1: LDI R20, 125LP2: LDI R21, 250 LP3:

NOPDEC R21BRNE LP3DEC R20BRNE LP2DEC R19BRNE LP1POP R21

Trang 7

BÀI 2

1 Trả lời các câu hỏi

a Các chân SCL, SDA là chân nào của AVR

+ Chân SCL là chân PD0

+ Chân SDA là chân PD1

b Vẽ hình mô tả kết nối trong bài thí nghiệm

SDA của vi xử lý nối với SDA của RTC SCL của vi xử lý nối với SCL của RTC PD0 nối với SW0

PD1 nối với SW1

POP R20POP R19RET

Trang 8

2. Lưu đồ giải thuật: Viết chương trình con khởi động RTC với thời gian hiện hành, cấu hình xung MFP tần số 1Hz Sau đó cứ mỗi cạnh lên của MFP, đọc các giá trị ngày tháng năm giờ phút giây của RTC và cập nhật lên LCD

Trang 9

3. Mã nguồn và chú thích

.DEF NUM_MIN=R22 ;bi?n ??t giá tr? MIN

.EQU CTL_BYTE=0B11011110 ;byte ?i?u khi?n truy xu?t

CBI CONT_DR,SW1 ;chân SW1 input

SBI CONT,SW1 ;?i?n tr? kéo lên chân SW1

CBI CONT_DR,SW2 ;chân SW2 input

SBI CONT,SW2 ;?i?n tr? kéo lên chân SW2

Trang 10

LDI R18,$28 ;Function set 2 dòng font 5x8,mode 4 bit

LDI R20,$0C ;display on,con tr? off

LDI R21,$06 ;Entry mode set d?ch ph?i con tr?,DDRAM t?ng 1 ?/c

LDI R17,$80 ;con tr? b?t ??u ? ??u dòng 1

RCALL CURS_POS ;xu?t l?nh ra LCD

LDI ZH,HIGH(MSG1<<1);Z tr? ??a ch? ??u b?ng MSG1 trong Flash ROM

LDI ZL,LOW(MSG1<<1)

RCALL MSG_DISP ;ghi MSG1 ra LCD

LDI R17,$C0 ;con tr? b?t ??u ? ??u dòng 2

RCALL CURS_POS ;xu?t l?nh ra LCD

LDI ZH,HIGH(MSG2<<1);Z tr? ??u b?ng tra MSG2

RCALL TWI_START ;phát xung START

LDI R17,(CTL_BYTE|0X00);truy xu?t ghi RTC_TCCR

RCALL TWI_WRITE ;ghi RTC+W

LDI R17,0X07 ;??a ch? thanh ghi Control

RCALL TWI_START ;phát xung START

LDI R17,(CTL_BYTE|0X00);truy xu?t ghi RTC_TCCR

RCALL TWI_WRITE ;ghi RTC+W

LDI R17,0X00 ;??a ch? thanh ghi 0x00

RCALL TWI_WRITE

RCALL TWI_START ;phát xung START

LDI R17,(CTL_BYTE|0X01);truy xu?t ??c RTC_TCCR

Trang 11

RCALL TWI_WRITE ;ghi RTC+R

CBR R17,(1<<STO) ;xóa bit ST

Trang 12

LDI XH,HIGH(RTC_BUF+3);X tr? buffer RTC th?

LDI XL,LOW(RTC_BUF+3)

LDI POS_CRS,$84 ;??t con tr? v? trí th?

RCALL SET_NUM ;??t và hi?n th? th?

LDI XH,HIGH(RTC_BUF+2);X tr? buffer RTC gi?

LDI XH,HIGH(RTC_BUF+1);X tr? buffer RTC phút

LDI XL,LOW(RTC_BUF+1)

Trang 13

LDI XH,HIGH(RTC_BUF);X tr? buffer RTC giây LDI

LDI XH,HIGH(RTC_BUF+4);X tr? buffer RTC ngày LDI XL,LOW(RTC_BUF+4)

LDI XH,HIGH(RTC_BUF+5);X tr? buffer RTC thángLDI XL,LOW(RTC_BUF+5)

LDI XH,HIGH(RTC_BUF+6);X tr? buffer RTC n?mLDI XL,LOW(RTC_BUF+6)

LDI XH,HIGH(RTC_BUF);X tr? buffer RTC

LDI XL,LOW(RTC_BUF)

RCALL TWI_START ;phát xung START

LDI R17,(CTL_BYTE|0X00);truy xu?t ghi RTC

RCALL TWI_WRITE ;ghi RTC+W

LDI R17,0X00 ;??a ch? thanh ghi giâyRCALL TWI_WRITE ;ghi ??a ch? TCCR

Trang 14

ANDI R17,(1<<SW1)|(1<<SW2);che bit SW1,SW2

CPI R17,(1<<SW1)|(1<<SW2);ki?m tra SW nh?n?

Trang 15

CBR R17,(1<<STO) ;?úng,xóa bit ST

DAY_CHK:

MOV R17,NUM_MIN ;l?n h?n,tr? v? gi?i h?n MIN

RCALL NUM_DISP ;hi?n th? s? BCD ??t

RCALL DELAY_US

RCALL OUT_LCD ;hi?n th? giá tr?

;MSG_DISP hi?n th? chu?i ký t? k?t thúc b?ng mã NULL ??t trong Flash ROM

;Input: Z ch?a ??a ch? ??u chu?i ký t?

;Output: hi?n th? chu?i ký t? ra LCD t?i v? trí con tr? hi?n hành

;S? d?ng R16,R17,ctc DELAY_US,OUT_LCD

Trang 16

;

MSG_DISP:

LPM R17,Z+ ;l?y mã ASCII ký t? t? Flash ROM

CPI R17,NULL ;ki?m tra ký t? k?t thúc

RCALL DELAY_US

SBI LCD,RS ;RS=1 ghi data hi?n th? LCD

RCALL OUT_LCD ;ghi mã ASCII ký t? ra LCD

RJMP MSG_DISP ;ti?p t?c hi?n th? ký t?

;INIT_LCD4 kh?i ??ng LCD ghi 4 byte mã l?nh theo giao ti?p 4 bit

;Function set:R18=$28 2 dòng font 5x8 giao ti?p 4 bit

;Clear display:R19=$01 xóa màn hình

;Display on/off LCDrol:R20=$0C màn hình on,con tr? off

;Entry mode set:R21=$06 d?ch ph?i con tr? ,?/c DDRAM t?ng 1 khi ghi data

;RS=bit0=0,RW=bit1=0

;

INIT_LCD4:

RCALL OUT_LCD ;ghi 1 byte data ra LCD

;OUT_LCD4 ghi mã l?nh/data ra LCD

;Input: R17 ch?a mã l?nh/data 4 bit cao

;OUT_LCD ghi 1 byte mã l?nh/data ra LCD

;chia làm 2 l?n ghi 4bit

;Input: R17 ch?a mã l?nh/data,R16

Trang 17

;bit RS=0/1:l?nh/data,bit RW=0:ghi

ANDI R17,$F0 ;l?y 4 bit th?p chuy?n thành cao

RCALL OUT_LCD4 ;ghi ra LCD

RET

;

;DELAY_US t?o th?i gian tr? =R16x100?s(Fosc=8Mhz)

;Input:R16 h? s? nhân th?i gian tr? 1 ??n 255

Trang 19

BÀI 3

 Thực hiện trên kit thí nghiệm:

1 Trả lời các câu hỏi

Trang 20

.EQU SPI_DDR = DDRB.EQU SPI_PORT = PORTB.EQU SPI_SCK = 7.EQU SPI_MOSI = 5.EQU SPI_MISO = 6.EQU SPI_SS = 4 START:

RCALL SPI_MASTER_INIT RCALL USART_INITLDI R16, HIGH(RAMEND) OUT SPH, R16LDI R16, LOW(RAMEND) OUT SPL, R16

SBI SPI_PORT, SPI_SS MAIN:

LOOP:

RCALL USART_RECEIVE_CHAR CBI SPI_PORT, SPI_SS RCALL SPI_MASTER_TRANSMIT SBI SPI_PORT, SPI_SS RJMPLOOP

SPI_MASTER_INIT:

LDI R16, (1 << SPI_MOSI) | (1 << SPI_SCK) | (1 << SPI_SS) OUT SPI_DDR, R16

CLR R16OUT SPI_PORT, R16LDI R16, (1 << SPE0) | (1 << MSTR0) | (1 << SPR00) OUT SPCR0, R16

a Theo datasheet của 74HC595, tần số cao nhất của xung nhịp đưa vào

74595 là bao nhiêu?

+ Tần số cao nhất của xung nhịp đầu vào cho 74595 là 25 MHz ở 4.5V Đây là tần suất hoạt

động tối đa được khuyến nghị cho thiết bị.

b Với clock là 8Mhz thì SPI của Atmega328 có tốc độ cao nhất là bao nhiêu?

+ Tốc độ cao nhất của SPI bạn có thể nhận được từ Atmega328P là một nửa của tốc độ CPU Vì

vậy, với một Arduino chạy ở 16MHz, tốc độ SPI cao nhất là 8MHz Với một clock là 8MHz, tốc độ SPI cao nhất là 4MHz.

2 Mã nguồn và chú thích

Trang 21

RETSPI_MASTER_TRANSMIT: OUT SPDR0, R16

WAIT_TRANSMIT_CPLT:

IN R18, SPSR0 SBRS R18, SPIF0RJMP WAIT_TRANSMIT_CPLTRET

USART_INIT:

;SET BAUDRATE TO 9600BPS WITH 8MHZ CLOCK LDIR16, 0

STS UBRR0H, R16 LDI R16, 51 STSUBRR0L, R16

;SET FRAME FORMAT: 8 DATA BITS, NO PARITY, 1 STOP BIT LDIR16, (1 << UCSZ01) | (1 << UCSZ00)

STS UCSR0C, R16

;ENABLE TRANSMITTER AND RECEIVER LDI R16, (1 << RXEN0) | (1 << TXEN0) STS UCSR0B, R16

RETUSART_RECEIVE_CHAR:

PUSH R17

;WAIT FOR THE TRANSMITTER TO BE READY USART_RECEIVE_CHAR_WAIT:

LDS R17, UCSR0A SBRS R17, RXC0RJMP USART_RECEIVE_CHAR_WAIT LDS R16, UDR0

POP R17 RETUSART_SEND_CHAR:

PUSH R17

;WAIT FOR THE TRANSMITTER TO BE READY USART_SEND_CHAR_WAIT:LDS R17, UCSR0A

SBRS R17, UDRE0RJMP USART_SEND_CHAR_WAIT STS UDR0, R16

POP R17 RET

Trang 22

.EQU SPI_DDR = DDRB.EQU SPI_PORT = PORTB.EQU SPI_SCK = 7.EQU SPI_MOSI = 5.EQU SPI_MISO = 6.EQU SPI_SS = 4.DEF TX_SPI_BUF = R23.DEF RX_SPI_BUF = R24

; DEF TX_BUF = R21.DEF RX_BUF = R22

; EQU WIP = 0.EQU WREN = $06.EQU RDSR = $05.EQU WRSR = $01.EQU SPI_RD = $03.EQU SPI_WR = $02.EQU PE = $42.EQU MEM_BYTE3 = $

.EQU MEM_BYTE21 = $0101

; .DEF COUNT = R25.ORG 0

RJMP INIT.ORG 0x40

1 Trả lời các câu hỏi

a Dung lượng của EEPROM 25AA1024 là bao nhiêu?

+ EEPROM 25AA1024 là bộ nhớ EEPROM nối tiếp 1024 Kbit với các chức năng EEPROM nối

tiếp cấp byte và cấp độ trang Nó được tổ chức dưới dạng một khối 128K x 8-bit Do đó, dung lượng của EEPROM 25AA1024 là 128 KB.

b Theo datasheet, tần số nhanh nhất của xung CK đưa vào EEPROM này

là bao nhiêu?

+ Tần số nhanh nhất của xung CK được đưa vào EEPROM này là 20 MHz Đây là tốc độ xung

nhịp tối đa của thiết bị.

2 Mã nguồn và chú thích

BÀI 4

Trang 23

LDI R16, HIGH(RAMEND) OUT SPH, R16LDI R16, LOW(RAMEND) OUT SPL, R16

RCALL SPI_MASTER_INIT RCALL UART_INITCLR RX_BUF CLR TX_BUFCLR TX_SPI_BUFCLR RX_SPI_BUFLDI COUNT, 0SBI SPI_PORT, SPI_SS SER R16

OUT DDRA, R16 RCALL EEPROM_READMOV COUNT, RX_SPI_BUF CPI COUNT, $FFBRNE MAIN CLR COUNTMAIN:

RCALL UART_RECEIVE_CHAR INCCOUNT

RCALL EEPROM_DELRCALL EEPROM_WRITE OUT PORTA, COUNTRJMP MAIN

RETSPI_MASTER_TRANSMIT:

PUSH R18OUT SPDR0, TX_SPI_BUF WAIT_TRANSMIT_CPLT:

IN R18, SPSR0 SBRS R18, SPIF0RJMP WAIT_TRANSMIT_CPLT

IN RX_SPI_BUF, SPDR0POP R18

Trang 24

;SET BAUDRATE TO 9600BPS WITH 8MHZ CLOCK LDIR16, 0

STS UBRR0H, R16 LDI R16, 51 STSUBRR0L, R16

;SET FRAME FORMAT: 8 DATA BITS, NO PARITY, 1 STOP BIT LDIR16, (1 << UCSZ01) | (1 << UCSZ00)

STS UCSR0C, R16

;ENABLE TRANSMITTER AND RECEIVERLDI R16, (1 << RXEN0) | (1 << TXEN0) STS UCSR0B, R16

RETUART_RECEIVE_CHAR: PUSHR17

;WAIT FOR THE TRANSMITTER TO BE READY UART_RECEIVE_CHAR_WAIT:LDS R17, UCSR0A

SBRS R17, RXC0RJMP UART_RECEIVE_CHAR_WAIT LDS RX_BUF, UDR0

POP R17 RETUART_SEND_CHAR: PUSHR17

;WAIT FOR THE TRANSMITTER TO BE READY UART_SEND_CHAR_WAIT:LDS R17, UCSR0A

SBRS R17, UDRE0RJMP UART_SEND_CHAR_WAIT STSUDR0, TX_BUF

POP R17 RETEEPROM_READ:

;SEND ADDRESS TO EEPROM LDITX_SPI_BUF, SPI_RD CBI SPI_PORT, SPI_SSRCALL SPI_MASTER_TRANSMITLDI TX_SPI_BUF, MEM_BYTE3 RCALL SPI_MASTER_TRANSMITLDI TX_SPI_BUF, HIGH(MEM_BYTE21) RCALL SPI_MASTER_TRANSMIT

Trang 25

LDI TX_SPI_BUF, LOW(MEM_BYTE21)RCALL SPI_MASTER_TRANSMIT ; LAY DIA CHI TRONG EEPROM

;READ DATA FROM EEPROMLDI TX_SPI_BUF, $FF RCALL SPI_MASTER_TRANSMIT SBI SPI_PORT, SPI_SSRET

EEPROM_WRITE:

;ENABLE WIRTE DATA LDI TX_SPI_BUF, WREN CBI SPI_PORT, SPI_SS

RCALL SPI_MASTER_TRANSMIT SBI SPI_PORT, SPI_SSLDI TX_SPI_BUF, SPI_WR CBISPI_PORT, SPI_SS RCALL SPI_MASTER_TRANSMIT

;SEND ADDRESS TO EEPROM LDI TX_SPI_BUF, MEM_BYTE3 RCALL SPI_MASTER_TRANSMITLDI TX_SPI_BUF, HIGH(MEM_BYTE21) RCALL SPI_MASTER_TRANSMIT

LDI TX_SPI_BUF, LOW(MEM_BYTE21) RCALL SPI_MASTER_TRANSMIT

;WRITE DATA TO EEPROMMOV TX_SPI_BUF, COUNT RCALL SPI_MASTER_TRANSMIT SBI SPI_PORT, SPI_SSCHECK_IN_PROCESS:

CBI SPI_PORT, SPI_SS LDI TX_SPI_BUF, RDSRRCALL SPI_MASTER_TRANSMIT SBRC RX_SPI_BUF, WIP RJMPCHECK_IN_PROCESS SBI SPI_PORT, SPI_SSRET

EEPROM_DEL:

;ENABLE WIRTE DATA LDI TX_SPI_BUF, WREN CBI SPI_PORT, SPI_SS

RCALL SPI_MASTER_TRANSMIT SBI SPI_PORT, SPI_SS

Trang 26

BÀI 5

1 Trả lời các câu hỏi

a Atmega324PA có dung lượng EEPROM là bao nhiêu?

+ Atmega324PA có dung lượng EEPROM là 1KB.

b Liệt kê sự khác nhau giữa SRAM và EEPROM

LDI TX_SPI_BUF, LOW(MEM_BYTE21) RCALL SPI_MASTER_TRANSMIT

;WRITE DATA TO EEPROMMOV TX_SPI_BUF, COUNT RCALL SPI_MASTER_TRANSMIT SBI SPI_PORT, SPI_SSCHECK_IN_PROCESS_DEL:

CBI SPI_PORT, SPI_SS LDI TX_SPI_BUF, RDSRRCALL SPI_MASTER_TRANSMIT SBRC RX_SPI_BUF, WIP RJMP CHECK_IN_PROCESS_DEL SBI SPI_PORT, SPI_SS

RET

Ngày đăng: 03/05/2024, 17:52

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w