Chia gián tiếp Lấy số bị chia trừ đi số chia, kết quả sẽ là số bị chia của phép toán tiếp theo, lặp lại đến khi số bị chia nhỏ hơn số chia hoặc bằng 0... Nhóm tín hiệu chọn vi mạch giải
Trang 1Mechatronics Dept Dept
http://www.ntu.edu.vn/
Email:
Email: hungtv@ntu.edu.vn hungtv@ntu.edu.vn
Tài liệu tham khảo
Trang 2Nội dung chương trình
ChCh0101: Các hệ đếm và mã hoá: Các hệ đếm và mã hoá
ChCh0202: Hệ thống vi xử lý: Hệ thống vi xử lý
ChCh0303: Bộ nhớ: Bộ nhớ
ChCh0404: Họ vi điều khiển AVR: Họ vi điều khiển AVR
ChCh0505: Ngôn ngữ lập trình CodevisionAVR: Ngôn ngữ lập trình CodevisionAVR
Trang 31 1 1 2 2 Chuyển đổi giữa hệ mười và hệ hai
Đổi hệ hai sang hệ mười
0 1
1 1 0 1
Trang 41.1.2 Chuyển đổi giữa hệ mười và hệ hai (tiếp))
Đổi số thập phân hệ mười sang hệ hai
0,12510= 0,0012
Số BCD ( số hệ mười mã hoá bằng hệ hai)
Số BCD thích hợp cho các thiế bị đo có hiển thị số ở đầu ra.
0 0 1
1.2 Các phép toán số học đối với hệ hai
cci = (ai – – B Bii 11) ) – – b bi (nếu (ai – – B Bii 11) >= biivà và B Bii= 0)
cci = (ai – – B Bii 11+ x) + x) – – b bi (nếu (ai – – B Bii 11) < bi và và B Bii= 1)
Ví dụ trừ hệ hai
1101 1001
0001 1011
1111 0100 +
1101 1001
0001 1011
1011 1110 -
Trang 51.2.2 Phép trừ và số bù hai (tiếp))
b Số bù hai
Ta có thể thay phép trừ bằng phép cộng: cộng số bị trừ với đối số của số trừ.
Để tìm số bù hai của một số A ta làm theo các bước sau:
+ Biểu diễn số A số hệ hai của nó.
+ Tìm số bù một (
+ Tìm số bù một (bù logic bù logic) của số đó () của số đó (đảo bít đảo bít).
+ Cộng một vào số bù một ở trên để nhận được số bù hai của A.
1 0 0 0 0 1 1 1
1 1 1 0 0 1 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
1 1 1 0 0 1 1 1
1 1 1 1 1 0 0 1 1 0 0 1 1
1.2.2 Phép chia
b Chia trực tiếp
Ví dụ: 35/5 = 7
b Chia gián tiếp
Lấy số bị chia trừ đi số chia, kết quả sẽ là số bị chia của phép toán
tiếp theo, lặp lại đến khi số bị chia nhỏ hơn số chia hoặc bằng 0.
1
1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0
0 0 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1
1 0 0 1 1 1
1 1 1 1 1 1
1 0 0 1 1 1
1 0 0 1 1 1
1 0 0 1 1 0
Trang 6Khả năng thay đổi dễ dàng
Khả năng tái sử dụng tài nguyên (thư viện,…)
Trang 7A A microprocessor microprocessor is a central processing unit on a is a central processing unit on a
single chip
peripheral I/O components and memory (RAM & ROM)
used to be called a “
used to be called a “microcomputer microcomputer.”.”
above are combined on the same single chip that the
microprocessor is on, is called a
microprocessor is on, is called a microcontroller microcontroller
Trang 82.3
2.3 Kiến Kiến trúc trúc vi vi điều điều khiển khiển
ĐơnĐơn vịvị xửxử lýlý sốsố họchọc (ALU)(ALU)
(kết quả được lưu lại)
GeneralPurposeRegistrers
ALU
Trang 92.3.2 Bộ nhớ
64 I/O Resisters
Internal SRAM (512 x 8)
EEPROM (512 x 8)
thiết bị ngoại vi
Trang 102.3.5 Đơn vị điều khiển
Trang 112.3.6 Các họ vi điều khiển (tiếp tiếp – – so sánh so sánh))
Tập lệnh (Instruction))
Chương Chương 3 3: Bộ nhớ : Bộ nhớ
Trang 123.1 Bộ nhớ bán dẫn
ROM ReadOnly
Trang 13a Nhóm tín hiệu địa chỉ
b Nhóm tín hiệu dữ liệu
mỗi ô nhớ
c Nhóm tín hiệu chọn vi mạch
giải mã địa chỉ
treo (ở trạng thái trở kháng cao)
d Nhóm tín hiệu điều khiển
Trang 14Select IC
Hình 3 Bộ nhớ ROM
3.1.3 ROM có thể lập trình được
a PROM (Programmable ROM))
Thời gian truy cập nhanh 120 Thời gian truy cập nhanh 120 250ns 250ns
Chỉ nạp một lần duy nhất bằng các đốt cháy các cầu chì
Điện áp khi lập trình khoảng 10 Điện áp khi lập trình khoảng 10 13V 13V
0
D0
Address decoder
Trang 15b EPROM (erasable PROM))
Thời gian truy cập khoảng 120 Thời gian truy cập khoảng 120 –– 450 ns450 ns
Điện áp lập trình khoảng 10Điện áp lập trình khoảng 10 25V25V
c EEPROM (electrically EPROM))
Trang 16d Flash memory
3.1.4 RAM
Bị mất dữ liệu khi mất điện.
Thời gian truy cập nhanh (có loại 15ns).
Register 0 Register 1 Register 2
Register 62 Register 63
Output buffers
CS
Hình 3 Cấu tạo bên trong của 64 x 4 RAM
Trang 173.1.4 RAM (tiếp))
SRAM (static RAM)
Chế tạo đơn giản
Dễ dàng bảo trì
Thường được sử dụng trong hệ thống có bộ nhớ nhỏ
DRAM (d ynamic RAM)
Giá thành thấp
Đòi hỏi mạch phụ trợ
Phải làm tươi (refresh) thường xuyên
Thường được sử dụng trong hệ thống có bộ nhớ lớn
3.2 Giải mã địa chỉ cho bộ nhớ
Phân định không gian tổng thể thành các vùng nhớ khác nhau
Đảm bảo tính đơn trị của xung chọn
Khi thiết kế thường có dự phòng (spare) để có thể mở rộng
mà không phải thiết kế lại mạch.
Mạch giải
mã địa chỉ Tín hiệu địa chỉ
Tín hiệu điều khiển
Các tín hiệu chon chip
Hình 3 Mạch giải mã địa chỉ
Trang 186 G2A
4 G2B 5
A19
A16– A18
Hình 3 Sơ đồ giải mã dùng 74LS138
Trang 19A0 A1 A2 A3 A4 A5 A6 A7
Hình 3 Sơ đồ giải mã dùng PROM
Trang 203.2.3 Giải mã dùng ROM (tiếp))
Chỉ sử dụng 8 byte đầu tiên, các byte khác đều chứa cùng
A4 A3
A 2
A1 A0
O7 O6
O 5
O4 O3
O 2
O1 O0
G1
6 G2A
4 G2B 5
+Vcc
A 15 – A 19
D0– D7
FF000-FFFFF F8000-F8FFF
Hình 3 Phối ghép bộ nhớ
Bộ tạo xung trễ Ready
Trang 21Data in Data out
Column address decoder
7 bit Column address register
Row address decoder
7 bit Row address register
CS I/03 I/02 I/01 I/00
A3 A2 A1 A0R/W
CS
Trang 2233 44 1 1 Mở rộng kích thước ô nhớ Mở rộng kích thước ô nhớ ((tiếp))
Hình 3 Kết hợp bốn bộ nhớ 2K x 8 thành 2K x 32
Address bus (AB0– AB10)
Data bus (DB0– DB31)
RAM-0 2K x 8
CS I/03 I/02 I/01 I/00
A3 A2 A1 A0R/W
AB4
Trang 23Chương 4: Họ vi điều khiển AVR
Trang 244.1 Giới thiệu chung
AVR AVR Kiến trúc RISCKiến trúc RISC
Khoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máy
32 thanh ghi đa năng 8 bit
Có thể lên tới 16 MIPS tại tần số 16MHz
Các modul vào ra (I/O moduls)
ADC 10bit và từ 8 16 kênh Analog
1 đến 2 Programmable UART
Master/Slave ISP Serial Interface
3 4 Timer/Counter: 1 x 16 bit, 2 x 8 bit
WatchDog Timer
Analog Comparator
PWM
Công suất (Power Management):
3 chế độ nghỉ (Sleep Mode): 3 chế độ nghỉ (Sleep Mode):
Trang 254.1 Giới thiệu chung (( tiếp ))
–
– Điện áp làm việc : Điện áp làm việc :
Vcc 4.0 Vcc 4.0 6.0V với AT90S8535 6.0V với AT90S8535
Vcc 2.7 Vcc 2.7 6.0V với AT90LS8535 6.0V với AT90LS8535
–
– Tần số CLOCK Tần số CLOCK
0 0 8MHz với AT90S8535 8MHz với AT90S8535
0 0 4MHz với AT90LS8535 4MHz với AT90LS8535
0 0 16MHz với Atmegaxx 16MHz với Atmegaxx
Trang 2664 I/O Resisters
Internal SRAM (512 x 8)
EEPROM (512 x 8)
… R30 R31 I/O Register
SRAM Organization
Trang 274.1.2 Các thanh ghi đa năng
a Các thanh ghi đa năng
Bao gồm 32 thanh ghi 8 bit
Được thực hiện trực tiếp từ ALU
Các cặp thanh ghi R26,,27; R28, 29; R30, 31tạo thành các thanh
ghi 16 bit
b Các thanh ghi ngăn xếp
về sau khi phục vụ chương trình con ngắt và chương
trình con
Trang 28c Các thanh ghi trạng thái
phục vụ ngắt
d Thanh ghi che ngắt và cờ ngắt
Trang 29e Thanh ghi điều khiển
Trang 304.1.3
4.1.3 Ngắt Ngắt và và xử xử lý lý ngắt ngắt ((Interrupt Interrupt))
Khái
Khái niệmniệm
Dừng Dừng thực thực hiện hiện chương chương trình trình chính chính (CTC) (CTC) để để thực thực hiện hiện
XuấtXuất hiệnhiện khôngkhông đượcđược báobáo trướctrước
PhụcPhục vụvụ gầngần giốnggiống chươngchương trìnhtrình concon
TíchTích hợphợp nhiềunhiều loạiloại ngắtngắt
CóCó ưuưu tiêntiên ngắtngắt
Trang 314.1.3
4.1.3 Xử Xử lý lý ngắt ngắt
XuấtXuất hiệnhiện vàvà chocho phépphép ngắtngắt
HoànHoàn thànhthành lệnhlệnh hiệnhiện tạitại
LưuLưu trữtrữ địađịa chỉchỉ lệnhlệnh tiếptiếp theotheo vàovào ngănngăn xếpxếp
NạpNạp địađịa chỉchỉ ISR ISR vàovào PCPC
ThựcThực hiệnhiện ISRISR
KếtKết thúcthúc ISR ISR làlà lệnhlệnh RETIRETI
KhôiKhôi phụcphục địađịa chỉchỉ lệnhlệnh tiếptiếp theotheo trongtrong ngănngăn xếpxếp, ,
chương
chương trìnhtrình tiếptiếp tụctục thựcthực hiệnhiện
4.1.3
4.1.3 Phân Phân loại loại ngắt ngắt
NgắtNgắt mềmmềm ((software interrupt software interrupt))
Là
Là việc việc gọi gọi 1 1 ctc ctc (Subroutine) (Subroutine) được được xây xây dựng dựng riêng riêng mà mà ctc ctc
này
này còn còn có có thể thể được được gọi gọi bởi bởi thiết thiết bị bị ngoại ngoại vi vi
NgắtNgắt cứngcứng ((hardware interrupt hardware interrupt))
Do port
Do port phát phát tín tín hiệu hiệu đến đến CPU CPU
NgắtNgắt trongtrong ((internal interrupt internal interrupt))
Trang 324.1.3 Ngắt và xử lý ngắt
Vector No ProgramAddress Source Interrupt Difinition
1 $000 Reset External Pin, PowerExternal Pin, Power on Reset, Brownon Reset, Brown out Reset, out Reset,
Watchdog Reset and JTAG AVR Reset
2 $002 INT0 External Interrupt Request 0
3 $004 INT1 External Interrupt Request 1
4 $006 INT2 External Interrupt Request 2
5 $008 TIMER2 COMP Timer/Counter2 Compare Match
6 $00A TIMER2 OVF Timer/Counter2 Overflow
7 $00C TIMER1 CAPT Timer/Counter1 Capture Event
8 $00E TIMER1 COMPA Timer/Counter1 Capture Match A
9 $010 TIMER1 COMPB Timer/Counter1 Capture Match B
10 $012 TIMER1 OVF Timer/Counter1 Overflow
11 $014 TIMER0 COMP Timer/Counter0 Compare Match
12 $016 TIMER0 OVF Timer/Counter0 Overflow
13 $018 SPI, STC Serial Transfer Complete
14 $01A USART, RXC USART, Rx Complete
15 $01C USART, UDRE USART Data Register Empty
16 $01E USART, TXC USART, Tx Complete
17 $020 ADC ADC Conversion Complete
18 $022 EE_RDY EEPROM Ready
19 $024 ANA_COMP Analog Comparator
20 $026 TWI Two Two wire Serial Interface wire Serial Interface
21 $028 SPM_RDY Store Program Memory Ready
với cờ I (Global Interrupt Enable) trong thanh ghi
SREG được thiết lập
trình con phực vụ ngắt
Trang 334.1.3
4.1.3 Ngắt Ngắt và và xử xử lý lý ngắt ngắt ((tiếp))
I I – – Global Interrupt Enable Global Interrupt Enable
T T – – Bit Copy Storage Bit Copy Storage
H H – – Haft Carry Flag Haft Carry Flag
S S – – Sign Bit S = N Sign Bit S = N⊕ ⊕ V
V V – – Overflow Flag Overflow Flag
N N – – Negative Flag Negative Flag
Z Z – – Zero Flag Zero Flag
C C – – Carry Flag Carry Flag
Trang 34Nguồn Nguồn đồng đồng hồ hồ từ từ mạch mạch chia chia thời thời gian gian hoặc hoặc từ từ chân chân T0 T0
((theo theo sườn sườn lên lên//xuống xuống))
Ngắt Ngắt tràn tràn
16 bit
Nguồn Nguồn đồng đồng hồ hồ từ từ mạch mạch chia chia thời thời gian gian hoặc hoặc từ từ chân chân T1 T1
((theo theo sườn sườn lên lên//xuống xuống))
Nguồn đồng hồ từ mạch chia thời gian hoặc từ dao động
bên ngoài (chân TOSC1 và TOSC2 nối với tụ thạch
anh 32768Hz)
Có ngắt tràn và ngắt thích ứng so sánh
Cho phép đưa tín hiệu ra chân OC2 khi có tín hiệu thích
ứng so sánh
Trang 354.2.1 Timer/Counter (tiếp))
4.2.2 WatchDog Timer
Processor Watchdog Timer
Clock
Restart
Reset
Trang 364.2.2 WatchDog Timer
Processor Watchdog Timer
Clock
Restart
Reset
Trang 374.2.2 WatchDog Timer (tiếp))
Trang 384.2.3 Các cổng vào ra ((tiếp))
Thanh ghi dữ liệu : PORTA
Thanh ghi điều khiển hướng dữ liệu : DDRA
Thanh ghi địa chỉ các chân vào : PINA
thể vừa có bit vào vừa có bit ra)
bit DDRAi=1, chân PAi là chân ra ( = PORTAi)
bit DDRAi=0, chân PAi là chân vào (= PINAi)
Pull_up, I = 33Pull_up, I = 33µAµA÷÷160µA160µA
Trang 394.2.4 ADC
Độ phân giải tối đa 10 bit, xấp xỉ liên tiếp
Độ chính xác tuyệt đối đến Độ chính xác tuyệt đối đến ± ±2 LSB 2 LSB
Thời gian chuyển đổi: 65 Thời gian chuyển đổi: 65 260 µs, 13 chu kỳ cho một lần 260 µs, 13 chu kỳ cho một lần
4.2.4 ADC (tiếp tiếp ))
Thanh ghi chọn kênh : ADMUX
Thanh ghi điều khiển trạng thái: ADCSRA
Trang 404.2.5 USART
Đặc điểm:
Truyền song công
Truyền đồng bộ hoặc không đồng bộ
Master hoặc Slave cấp xung nhịp
Khuân dạng dữ liệu đa dạng (5=>9 bit dữ liệu, 1 hoặc 2
bít dừng)
Kiểm tra bit chẵn lẻ bằng phần cứng
Tự phát hiện lỗi tràn dữ liệu, khung dữ liệu lỗi
Trang 414.2.5 USART (
4.2.5 USART (tiếp tiếp ))
Thanh ghi dữ liệu: UDR (gồm hai thanh ghi độc lập có cùng
địa chỉ vào ra): chứa dữ liệu nhận và truyền
Thanh ghi điều khiển và trạng thái: UCSR
((Control and Status Register))
hoặc cả hai, có sử dụng ngắt hay không?
Đưa byte dữ liệu cần truyền vào UDR
Đợi đến khi UDRE = 1 (hoặc sử dụng ngắt) thì truyền tếp
byte tiếp theo
Trang 424.2.5 USART (
4.2.5 USART (tiếp tiếp ))
Đợi đến khi cờ RXC=1 (hoặc sử dụng ngắt) báo hiệu nhận
được byte dữ liệu
Kiểm tra cờ FE và OR
Đọc byte dữ liệu từ UDR
(IDLE) St 0 1 2 3 4 [5] [5] [6] [6] [7] [7] [8] [8] [P] [P] Sp1 [Sp2] (St/IDLE)
MCU MCU
Trang 434.2.6 EEPROM
EERIE (EEPROM Ready Intr En)
EEMWE (EEPROM Master Write En) : cho phép ghi Bit này
sẽ tự động bị xoá sau 4 chu kỳ đồng hồ
EEWE (EEPROM Write En) : khi bit này được thiết lập và
EEMWE=1 thì thao tác ghi mới được thực hiện
EERE (EEPROM Read En): cho phép đọc
EEPROM Khi đọc xong, bit này sẽ tự động bị xoá và CPU sẽ
dừng 4 chu kỳ đồng hồ trước khi lệnh tiếp theo được thực hiện
Đợi đến khi EEWE=0
Ghi địa chỉ mới vào EEARL và EEARH
Ghi dữ liệu mới vào EEDR
Ghi mức logic 1 vào bit EEMWE và mức logic 0 vào
EEWE đồng thời
Trong vòng 4 chu kỳ đồng hồ sau ghi giá trị logic 1 vào
EEWE
Trang 444.2.7 SPI (Serial Peripheral Interface)
4.2.7 SPI (Serial Peripheral Interface – tiếp)
Trang 454.2.8 So sánh tín hiệu tương tự (Analog Comparator))
analog giữa hai chân AIN1 và AIN2
+5V
CON8
R1 10K
PB1/T1 PB2/INT2/AIN0 PB3/OC0/AIN1 PB4/SS PB5/MOSI
PD4/OC1B
PD6/ICP PD7/OC2
PC0/SCL PC1/SDA PC2/TCK PC3/TMS
PC5/TDI PC6/TOSC1
AVCC
AGND
AREF
PA7/ADC7 PA5/ADC5 PA3/ADC3 PA1/ADC1
Y1 8MHz
Reset
C5
22p MISO
+ C3 4.7u
MOSI
SCK
4.1 Giới thiệu chung ( tiếp ))
Trang 46….
Trang 48Hình 5 Giao diện chính của CodevisionAVR
Trang 495.1.2 Project
Trang 505.1.4 Thiết lập môi trường
Trang 515.3 Hàm chuẩn
char char getchar getchar(void) (void)
Returns a character received by the UART, using polling.
void void putchar putchar(char c) (char c)
Transmits the character c using the UART, using polling.
…
unsigned char unsigned char cabs cabs(signed char x)(signed char x)
returns the absolute value of the byte x.
unsigned int unsigned int abs abs(int x)(int x)
returns the absolute value of the integer x.
…
LCD
void void lcd_write_byte lcd_write_byte (unsigned char addr, unsigned char data)(unsigned char addr, unsigned char data)
write a byte to the LCD character generator or display RAM
unsigned char unsigned char lcd_read_byte lcd_read_byte(unsigned char addr);(unsigned char addr);
read a byte from the LCD character generator or display RAM
void void lcd_gotoxy lcd_gotoxy(unsigned char x, unsigned char y);(unsigned char x, unsigned char y);
set the LCD display position x=0 39 y=0 3
II2C
void void i2c_init i2c_init(void)(void)
this function initializes the I2C bus.
unsigned char unsigned char i2c_start i2c_start (void)(void)
issues a START condition Returns 1 if bus is free or 0 if the I2C bus is
busy.
void void i2c_stop i2c_stop (void)(void)
issues a STOP condition.
Trang 53
Vào rara song song songsong
Vào Vào ra ra tương tương tự tự
ADC
DAC
Vào ra của 8051
Trang 54Vào ra của AVR
Trang 55Bàn phím 4x4
Key Board