Tải bản đầy đủ (.pdf) (98 trang)

Ebook hướng dẫn sử dụng vi điều khiển 8 bit SG8V1 phần 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.62 MB, 98 trang )

Trang chủ:www.icdrec.edu.vn
E-mail:
Điện thoại: (84-8).37242171 (84-8).37242172

HƯỚNG DẪN SỬ DỤNG
VI ĐIỀU KHIỂN 8-bit
SG8V1

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

1


Nội dung

Nội dung
Nội dung........................................................................................................................................... 2
Mục lục hình .................................................................................................................................... 6
Mục lục bảng.................................................................................................................................... 8
Danh Mục Thuật Ngữ và Từ Viết Tắt.............................................................................................. 9
1. Giới thiệu ................................................................................................................................... 12
1.1. Sơ đồ chân ........................................................................................................................... 14
1.2. Sơ đồ khối ........................................................................................................................... 16
2. Kiến trúc pipeline ....................................................................................................................... 17
2.1. Các bước thực hiện lệnh ..................................................................................................... 17
2.2. Kiến trúc pipeline 3 tầng ..................................................................................................... 17
2.3. Cách tính số chu kỳ thực hiện lệnh ..................................................................................... 18
3. Chế độ tiết kiệm năng lượng (IDLE Mode) ............................................................................... 21
3.1. Mô tả ................................................................................................................................... 21


3.2. Thanh ghi báo trạng thái CPU - CPUSTA ......................................................................... 23
3.3. Bộ đếm chương trình (PC) .................................................................................................. 23
3.4. Stack .................................................................................................................................... 23
3.4.1. Truy xuất giá trị mới nhất của Stack (TS: Top of Stack) ............................................. 24
3.4.2. Stack Pointer (SP) ........................................................................................................ 24
4. Reset của SG8V1 ....................................................................................................................... 27
4.1. Tổng quan về Reset ............................................................................................................. 27
4.2. Reset bởi người sử dụng (chân RST ) .............................................................................. 27
4.3. Reset khi chọn lập trình Flash (chân SPCS) ....................................................................... 27
4.4. Reset bởi stack .................................................................................................................... 28
4.5. Reset bởi Watchdog ............................................................................................................ 28
4.6. Định thời Reset ................................................................................................................... 28
5. Tổ chức bộ nhớ chương trình ..................................................................................................... 30
5.1. Bộ đếm chương trình .......................................................................................................... 30
5.2. Stack .................................................................................................................................... 31
5.2.1. Truy xuất giá trị mới nhất của Stack (TS: Top of Stack) ............................................. 31
5.2.2. Stack Pointer (SP) ........................................................................................................ 32
6. Tổ chức bộ nhớ dữ liệu .............................................................................................................. 33
6.1. Thanh ghi chọn băng ........................................................................................................... 33
6.2. Truy cập nhanh bộ nhớ dữ liệu ........................................................................................... 34
6.3. Thanh ghi mục đích chung .................................................................................................. 35
6.4. Thanh ghi chức năng đặc biệt ............................................................................................. 35
6.5. Các chế độ định địa chỉ bộ nhớ ........................................................................................... 40
6.5.1. Kế thừa và giá trị từ mã lệnh........................................................................................ 40
6.5.2. Định địa chỉ trực tiếp ................................................................................................... 40
6.5.3. Định địa chỉ gián tiếp qua con trỏ ................................................................................ 40
7. Bộ nhân 8-bit.............................................................................................................................. 42
8. Ngắt ............................................................................................................................................ 43
8.1. Thanh ghi quản lý ngắt toàn cục (GIC) .............................................................................. 44
8.2. Thanh ghi điều khiển ngắt theo cạnh (INTEDG)................................................................ 46

8.3. Thanh ghi cho phép ngắt 1 (IE1) ........................................................................................ 46
8.4. Thanh ghi độ ưu tiên ngắt 1 (IP1) ....................................................................................... 47
8.5. Thanh ghi lưu cờ ngắt 1 (IF1) ............................................................................................. 48
© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

2


Nội dung
8.6. Thanh ghi cho phép ngắt 2 (IE2) ........................................................................................ 50
8.7. Thanh ghi độ ưu tiên ngắt 2 (IP2) ....................................................................................... 51
8.8. Thanh ghi lưu cờ ngắt 2 (IF2) ............................................................................................. 52
8.9. Thanh ghi cho phép ngắt 3 (IE3) ........................................................................................ 54
8.10. Thanh ghi độ ưu tiên ngắt 3 (IP3) ..................................................................................... 55
8.11. Thanh ghi lưu cờ ngắt 3 (IF3) ........................................................................................... 55
9. Cổng truy xuất dữ liệu (General Purpose Input/Output - GPIO) ............................................... 57
9.1. GPIO PortA ......................................................................................................................... 59
9.2. GPIO PortB ......................................................................................................................... 60
9.3. GPIO PortC ......................................................................................................................... 63
9.4. GPIO PortD ......................................................................................................................... 66
10. Watchdog Timer ...................................................................................................................... 70
11. Timer 0 ..................................................................................................................................... 72
11.1. Mô tả Timer 0 ................................................................................................................... 72
11.2. Ngắt Timer0 ...................................................................................................................... 73
11.3. Bộ chia tần trước ............................................................................................................... 73
11.4. Thanh ghi .......................................................................................................................... 74
11.4.1. WT0CON ................................................................................................................... 74
11.4.2. T0REG ....................................................................................................................... 75

12. Timer 1 ..................................................................................................................................... 76
12.1. Chức năng của Timer 1 ..................................................................................................... 76
12.1.1. Tổng quan chức năng định thời của Timer 1 ............................................................. 76
12.1.2. Các chế độ của Timer1 .............................................................................................. 77
12.1.3. Đọc và ghi 16-bit thanh ghi bộ đếm Timer1 .............................................................. 78
12.2. Khối bắt và so sánh sự kiện .............................................................................................. 78
12.2.1. Chế độ bắt sự kiện...................................................................................................... 79
12.2.2. Chế độ so sánh sự kiện............................................................................................... 80
12.3. Thanh ghi .......................................................................................................................... 80
12.3.1. T1CON....................................................................................................................... 81
12.3.2. T1RH.......................................................................................................................... 82
12.3.3. T1RL .......................................................................................................................... 82
12.3.4. CCRH......................................................................................................................... 82
12.3.5. CCRL ......................................................................................................................... 82
13. Timer 2 và Timer 3 (Timer_x) ................................................................................................. 83
13.1. Tổng quan Timer_x........................................................................................................... 83
13.2. Hoạt động của Timer_x .................................................................................................... 83
13.3. Ngắt Timer_x .................................................................................................................... 84
13.4. Đọc/ghi 10-bit trong Timer_x. .......................................................................................... 84
13.5. Thanh ghi .......................................................................................................................... 85
13.5.1. TxCON....................................................................................................................... 85
13.5.2. TxRH.......................................................................................................................... 85
13.5.3. TxRL .......................................................................................................................... 86
13.5.4. TxPRH ....................................................................................................................... 86
13.5.5. TxPRL ........................................................................................................................ 86
14. Bộ tạo xung PWM (The Pulse Width Modulation) ................................................................. 87
14.1. Tổng quan PWM_x ........................................................................................................... 87
14.2. Chu kỳ xung PWM_x ....................................................................................................... 87
14.3. Chu kỳ nhiệm vụ ............................................................................................................... 88
14.4. Cấu hình hoạt động cho khối PWM_x .............................................................................. 89

14.5. Thanh ghi .......................................................................................................................... 90

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

3


Nội dung
14.5.1. PWMxCON................................................................................................................ 90
14.5.2. PWMxRL ................................................................................................................... 90
15. Serial Peripheral Interface (SPI) .............................................................................................. 91
15.1. Giới thiệu SPI.................................................................................................................... 91
15.2. Các thanh ghi của SPI ....................................................................................................... 92
15.2.1. Thanh ghi điều khiển SPI - SPICON ......................................................................... 92
15.2.2. Thanh ghi trạng thái - SPISTA .................................................................................. 93
15.3. Hoạt động của SPI ............................................................................................................ 94
15.4. Các bước lập trình SPI ...................................................................................................... 96
15.4.1. Lập trình SPI ở chế độ master .................................................................................... 96
15.4.2. Lập trình SPI ở chế độ slave ...................................................................................... 97
16. Inter-Integrated Circuit (I2C) ................................................................................................... 99
16.1. Thanh ghi của I2C ............................................................................................................. 99
16.1.1. I2CCON1 ................................................................................................................... 99
16.1.2. I2CCON2 ................................................................................................................. 101
16.1.3. I2CSTA .................................................................................................................... 103
16.1.4. CNTH/ADDRH và CNTL/ADDRL ........................................................................ 105
16.1.5. I2CBUF .................................................................................................................... 106
16.2. Hoạt động ........................................................................................................................ 107
16.3. Chế độ Master ................................................................................................................. 108

16.3.1. Master Truyền .......................................................................................................... 108
16.3.2. Master Nhận ............................................................................................................. 111
16.3.3. Đồng bộ clock .......................................................................................................... 114
16.3.4. Phân xử .................................................................................................................... 114
16.3.5. Định thời của sự kiện Start ...................................................................................... 115
16.3.6. Định thời của sự kiện Repeat Start .......................................................................... 116
16.3.7. Định thời của sự kiện Stop ....................................................................................... 117
16.3.8. Xung đột bus ............................................................................................................ 117
16.4. Chế độ Slave ................................................................................................................... 121
16.4.1. Định địa chỉ Slave .................................................................................................... 121
16.4.2. Mặt nạ địa chỉ........................................................................................................... 121
16.4.3. Địa chỉ 7-bit ............................................................................................................. 122
16.4.4. Chế độ 10-bit địa chỉ ................................................................................................ 124
16.5. Kéo dài xung clock ......................................................................................................... 125
16.6. Địa chỉ General Call........................................................................................................ 126
16.7. Dạng sóng ....................................................................................................................... 126
16.7.1. Dạng sóng I2C Master phát (chế độ 7-bit hoặc 10-bit địa chỉ) ................................ 127
16.7.2. Dạng sóng I2C Master nhận (chế độ 7-bit địa chỉ) .................................................. 128
16.7.3. Dạng sóng I2C Slave nhận chế độ 7-bit địa chỉ ....................................................... 129
16.7.4. Dạng sóng I2C Slave phát chế độ 7-bit địa chỉ ........................................................ 130
16.7.5. Dạng sóng I2C Slave nhận chế độ 10-bit địa chỉ ..................................................... 131
16.7.6. Dạng sóng I2C Slave phát chế độ 10-bit địa chỉ ...................................................... 132
17. Ngoại vi UART ...................................................................................................................... 133
17.1. Tổng quan về ngoại vi UART ......................................................................................... 133
17.2. Các thanh ghi liên quan đến ngoại vi UART .................................................................. 133
17.2.1. Thanh ghi trạng thái của ngoại vi UART thứ x (UxSTA) ....................................... 134
17.2.2. Thanh ghi điều khiển của UART thứ x .................................................................... 135
17.2.3. Thanh ghi tốc độ baud của UART thứ x (UxBRL) ................................................. 136
17.2.4. Thanh ghi lưu dữ liệu truyền của UART thứ x (UxTXREG) .................................. 137
17.2.5. Thanh ghi lưu dữ liệu nhận của UART thứ x (UxRXREG) .................................... 137


© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

4


Nội dung
17.2.6. Thanh ghi cho phép ngắt thứ 2 (IE2) ....................................................................... 137
17.2.7. Thanh ghi thiết lập ưu tiên ngắt thứ 2 (IP2) ............................................................. 138
17.2.8. Thanh ghi trạng thái ngắt thứ 2 (IF2)....................................................................... 139
17.2.9. Thanh ghi cấu hình chiều dữ liệu cho Port C (DIRC) ............................................. 141
17.2.10. Thanh ghi cấu hình chiều dữ liệu cho Port B (DIRB) ........................................... 141
17.3. Bộ tạo tốc độ Baud (BRG) .............................................................................................. 142
17.3.1. Tính toán tốc độ Baud .............................................................................................. 143
17.3.2. Xung lấy mẫu và xung dịch dữ liệu bên trong UART ............................................. 144
17.3.3. Lấy mẫu dữ liệu ....................................................................................................... 145
17.3.4. Dịch dữ liệu.............................................................................................................. 145
17.4. Bộ truyền UART ............................................................................................................. 146
17.4.1. Cấu trúc bộ truyền UART ........................................................................................ 146
17.4.2. Cấu hình sử dụng bộ truyền của ngoại vi UART ..................................................... 147
17.5. Bộ nhận UART ............................................................................................................... 149
17.5.1. Cấu trúc bộ nhận UART .......................................................................................... 149
17.5.2. Cấu hình sử dụng bộ nhận của ngoại vi UART ....................................................... 150
18. Ngoại vi ADC ........................................................................................................................ 153
18.1. Cấu trúc cơ bản của ADC ............................................................................................... 153
18.2. Các thanh ghi liên quan đến hoạt động của ADC ........................................................... 154
18.2.1. Thanh ghi điều khiển thứ 1 của ADC (ADCON1) .................................................. 154
18.2.2. Thanh ghi điều khiển thứ 2 của ADC (ADCON2) .................................................. 155

18.2.3. Thanh ghi lưu dữ liệu ADC (ADBUF) .................................................................... 155
18.2.4. Thanh ghi cho phép ngắt số 3 (IE3) ......................................................................... 155
18.2.5. Thanh ghi ưu tiên ngắt số 3 (IP3) ............................................................................ 156
18.2.6. Thanh ghi trạng thái ngắt số 3 (IF3) ........................................................................ 156
18.3. Hoạt động của ngoại vi ADC .......................................................................................... 157
18.4. Các chú ý khi sử dụng ngoại vi ADC ............................................................................. 158
18.4.1. Nguồn xung clock cấp cho ngoại vi ADC ............................................................... 158
18.4.2. Các yêu cầu về thông số và kết nối .......................................................................... 159
19. Tập lệnh ................................................................................................................................. 161
19.1. Giới thiệu ........................................................................................................................ 161
19.2. Thanh ghi cờ phép toán ................................................................................................... 163
19.3. Tóm tắt tập lệnh .............................................................................................................. 163
19.4. Hoạt động của lệnh ......................................................................................................... 166
20. Bộ nhớ chương trình FLASH ................................................................................................ 197
20.1. Phân vùng FLASH .......................................................................................................... 197
20.2. Chế độ bảo vệ chương trình ............................................................................................ 198

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

5


Nội dung

Mục lục hình
Hình 1-1: Sơ đồ chân ..................................................................................................................... 14
Hình 1-2: Sơ đồ khối của SG8V1 .................................................................................................. 16
Hình 2-1: Các bước thực hiện lệnh ................................................................................................ 17

Hình 2-2: Hoạt động thực hiện lệnh với kiến trúc không có pipeline ........................................... 18
Hình 2-3: Thực hiện lệnh với kiến trúc có pipeline ....................................................................... 18
Hình 2-4: Thực hiện lệnh thường với kiến trúc đường ống ........................................................... 18
Hình 2-5: Thực hiện lệnh bypass với kiến trúc đường ống ........................................................... 19
Hình 2-6: Thực hiện lệnh rẽ nhánh đơn chu kỳ với kiến trúc đường ống...................................... 19
Hình 2-7: Thực hiện lệnh rẽ nhánh 2 chu kỳ với kiến trúc đường ống .......................................... 20
Hình 3-1: Mô tả clock trong chế độ nghỉ ....................................................................................... 21
Hình 3-2: Mô tả trường hợp CPU wake up và thực hiện tiếp tục quá trình trước đó .................... 22
Hình 3-3: Mô tả trường hợp CPU wake up và vào chương trình ngắt........................................... 22
Hình 3-4: Stack và các thanh ghi liên quan ................................................................................... 24
Hình 4-1: Mạch kết nối đến chân RST ....................................................................................... 27
Hình 4-2: Mạch reset ngoài............................................................................................................ 29
Hình 5-1: Bản đồ địa chỉ của bộ nhớ dữ liệu ................................................................................. 30
Hình 5-2: Stack và các thanh ghi liên quan ................................................................................... 32
Hình 6-1: Cấu trúc bộ nhớ dữ liệu ................................................................................................. 33
Hình 6-2: Sử dụng thanh ghi BS để chọn băng ............................................................................. 34
Hình 9-1: Cell chuẩn của IO_PAD ................................................................................................ 57
Hình 9-2: Mô tả một kết nối Port cơ bản ....................................................................................... 59
Hình9-3: IO PortA ......................................................................................................................... 60
Hình9-4: IO PortB[0:1] và PortB[4] - dùng chung với Timer0 ..................................................... 61
Hình9-5: IO PortB[2:3] - dùng chung với UART.......................................................................... 61
Hình9-6: IO PortB[5:7] - dùng chung với bộ lập trình FLASH .................................................... 62
Hình9-7: IO PortC[0:1] - dùng chung với UART1........................................................................ 64
Hình9-8: IO PortC[2:3] - dùng chung với PWM ........................................................................... 64
Hình9-9: IO PortC[4:5] - dùng chung với SPI............................................................................... 64
Hình9-10: IO PortC[6:7] - dùng chung với SPI............................................................................. 65
Hình 9-11: IO PortD[0:3] - dùng chung với ngắt ngoài ................................................................ 67
Hình 9-12: IO PortD[4:5] - dùng chung với I2C ........................................................................... 67
Hình 9-13: IO PortD[6] - dùng chung với Capture/Compare ........................................................ 68
Hình 9-14: IO PortD[7] - dùng chung với Timer1......................................................................... 68

Hình 10-1 : Mô tả khối Watchdog Timer ...................................................................................... 70
Hình 11-1: Mô tả sơ đồ khối Timer0 ............................................................................................. 73
Hình 12-1: Mô tả sơ đồ khối Timer 1 ............................................................................................ 77
Hình 12-2: Sơ đồ của khối bắt sự kiện........................................................................................... 80
Hình 12-3: Sơ đồ của khối so sánh sự kiện.................................................................................... 80
Hình 13-1: Sơ đồ khối Timer_x (Timer 2 hoặc Timer 3) .............................................................. 83
Hình 14-1: Sơ đồ của khối PWM_x............................................................................................... 87
Hình 14-2: Dạng sóng PWM ......................................................................................................... 89
Hình15-1: Sơ đồ khối SPI .............................................................................................................. 91
Hình15-2: Sơ đồ kết nối của SPI ................................................................................................... 95
Hình 15-3: các chế độ truyền dữ liệu của SPI ............................................................................... 95
Hình 15-4: dạng sóng của SPI slave (CKP = 0, CKE = 1) ........................................................... 98
Hình 15-5: đồng bộ tín hiệu SPI SSx ............................................................................................. 98
Hình 16-1: Kết nối các thiết bị đến bus I2C ................................................................................ 108
© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

6


Nội dung
Hình 16-2: Khung truyền với địa chỉ 7-bit ở chế độ Master truyền ............................................ 109
Hình 16-3: Khung truyền với địa chỉ 10-bit ở chế độ Master truyền .......................................... 110
Hình 16-4: Khung truyền với địa chỉ 7-bit ở chế độ Master nhận ............................................... 111
Hình 16-5: Khung truyền với địa chỉ 10-bit ở chế độ Master nhận ............................................. 113
Hình 16-6: Đồng bộ clock............................................................................................................ 114
Hình 16-7: Phân xử ...................................................................................................................... 115
Hình 16-8: Định thời của quá trình tạo sự kiện Start ................................................................... 116
Hình 16-9: Định thời của quá trình tạo sự kiện Repeat Start ....................................................... 117

Hình 16-10: Định thời của quá trình tạo sự kiện Stop ................................................................. 117
Hình 16-11: Xung độ bus khi tạo Start (1) .................................................................................. 118
Hình 16-12: Xung độ bus khi tạo Start (2) .................................................................................. 118
Hình 16-13: Xung độ bus khi tạo Repeat Start (1) ...................................................................... 119
Hình 16-14: Xung độ bus khi tạo Repeat Start (2) ...................................................................... 119
Hình 16-15: Xung độ bus khi tạo Repeat Start (3) ...................................................................... 119
Hình 16-16: Xung độ bus khi tạo Stop ........................................................................................ 119
Hình 16-17: Xung đột bus trong quá trình truyền nhận dữ liệu................................................... 120
Hình 16-18: Địa chỉ 7-bit ............................................................................................................. 122
Hình 16-19: Định địa chỉ chế độ 10 bit........................................................................................ 124
Hình 16-20: Dạng sóng I2C Master phát ..................................................................................... 127
Hình 16-21: Dạng sóng I2C Master nhận .................................................................................... 128
Hình 16-22: Dạng sóng I2C Slave nhận chế độ 7-bit địa chỉ ...................................................... 129
Hình 16-23: Dạng sóng I2C Slave phát chế độ 7-bit địa chỉ ....................................................... 130
Hình 16-24: Dạng sóng I2C Slave nhận chế độ 10-bit địa chỉ .................................................... 131
Hình 16-25: Dạng sóng I2C Slave phát chế độ 10-bit địa chỉ ..................................................... 132
Hình 17-1: Các thành phần chính của ngoại vi UART ................................................................ 133
Hình 17-2: Xung lấy mẫu dữ liệu và xung dịch dữ liệu tính theo hệ số N .................................. 144
Hình 17-3: Xung lấy mẫu dữ liệu và xung dịch dữ liệu với N = 0 .............................................. 144
Hình 17-4: Xung lấy mẫu dữ liệu và xung dịch dữ liệu với N = 1 .............................................. 145
Hình 17-5: Lẫy mẫu dữ liệu với N ≠ 0 ........................................................................................ 145
Hình 17-6: Lấy mẫu dữ liệu với N = 0 ........................................................................................ 145
Hình 17-7: Dịch dữ liệu ............................................................................................................... 146
Hình 17-8: Minh họa cấu trúc cơ bản của bộ truyền UART........................................................ 147
Hình 17-9: Truyền một khung dư liệu ......................................................................................... 148
Hình 17-10: Truyền liên tục ......................................................................................................... 149
Hình 17-11: Cấu trúc của UART nhận ........................................................................................ 150
Hình 17-12: UART tiếp nhận ...................................................................................................... 152
Hình 18-1: Sơ đồ khối ngoại vi ADC .......................................................................................... 153
Hình 18-2: Giản đồ thời gian cho hoạt động của ADC ............................................................... 158

Hình 18-3: Lần chuyển đổi đầu tiên sau khi bit ADON (ADCON1[7]) được tích cực ............... 158
Hình 18-4: Mô hình ngõ vào của ADC ........................................................................................ 160
Hình20-1: Sơ đồ kết nối bộ nạp ................................................................................................... 197

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

7


Nội dung

Mục lục bảng
Bảng 1-1: Mô tả chân ..................................................................................................................... 15
Bảng 4-1: Điều kiện reset cho các thanh ghi đặc biệt .................................................................... 28
Bảng 6-1: Các thanh ghi chức năng đặc biệt ................................................................................. 36
Bảng 9-1: Mô tả chân của một IO_PAD ........................................................................................ 57
Bảng 9-2: Mô tả chiều.................................................................................................................... 58
Bảng 9-3: Mô tả bảng nhận dữ liệu ............................................................................................... 58
Bảng 9-4: Thanh ghi DIRA............................................................................................................ 60
Bảng 9-5: Mô tả thanh ghi PORTA ............................................................................................... 60
Bảng 9-6: Chức năng của PortB .................................................................................................... 62
Bảng 9-7: Thanh ghi DIRB ............................................................................................................ 62
Bảng9-8: Mô tả thanh ghi PORTB ................................................................................................ 63
Bảng 9-9: Chức năng của PortC .................................................................................................... 65
Bảng 9-10: Thanh ghi DIRC .......................................................................................................... 65
Bảng9-11: Chức năng PORTC ...................................................................................................... 66
Bảng9-12: Chức năng của PortD ................................................................................................... 68
Bảng 9-13: Thanh ghi DIRD.......................................................................................................... 69

Bảng 9-14: Mô tả chức năng PORTD ............................................................................................ 69
Bảng 10-1 : Mô tả thanh ghi WT0CON......................................................................................... 70
Bảng 11-1: Mô tả thanh ghi WT0CON.......................................................................................... 74
Bảng 11-2: Mô tả thanh ghi T0REG .............................................................................................. 75
Bảng 12-1: Mô tả thanh ghi T1CON ............................................................................................. 81
Bảng 12-2: Mô tả thanh ghi T1RH ................................................................................................ 82
Bảng 12-3: Mô tả thanh ghi T1RL ................................................................................................. 82
Bảng 12-4: Mô tả thanh ghi CCRH ............................................................................................... 82
Bảng 12-5: Mô tả thanh ghi CCRL ................................................................................................ 82
Bảng 13-1: Mô tả thanh ghi TxCON ............................................................................................. 85
Bảng 13-2 Mô tả thanh ghi TxRH ................................................................................................. 85
Bảng 13-3 Mô tả thanh ghi TxRL .................................................................................................. 86
Bảng 13-4 Mô tả thanh ghi TxPRH ............................................................................................... 86
Bảng 13-5 Mô tả thanh ghi TxPRL................................................................................................ 86
Bảng 14-1: Mô tả thanh ghi PWMxCON ...................................................................................... 90
Bảng 14-2: Mô tả thanh ghi PWMxRL.......................................................................................... 90
Bảng 15-1: Thanh ghi SPI.............................................................................................................. 92
Bảng15-2: Thanh ghi điều khiển SPI- SPICON ............................................................................ 92
Bảng 15-3: Thanh ghi trạng thái SPI- SPISTA .............................................................................. 93
Bảng 16-1: Mô tả thanh ghi I2CCON1 ở chế độ Master ............................................................... 99
Bảng 16-2: Mô tả thanh ghi I2CCON1 ở chế độ Slave ............................................................... 100
Bảng 18-1. Một số giá trị cấu hình tham khảo cho xung clock ngoại vi ADC ............................ 159
Bảng 19-1: Mô tả cho các trường mã lệnh ................................................................................... 161
Bảng 19-2: Tập lệnh SG8V1........................................................................................................ 163

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

8



Nội dung

Danh Mục Thuật Ngữ và Từ Viết Tắt
Thuật ngữ hoặc ký hiệu

Mô tả

RISC

Viết tắt của cụm từ “Reduced Instructions Set Computer”
Một cấu trúc hay phương pháp thiết kế vi xử lý theo hướng
“đơn giản hóa tập lệnh”.

Package

Dạng đóng gói chip

LQFP

Viết tắt của cụm từ “Low-profile Quad Flat Package”
Một dạng đóng gói chip với hình dạng phẳng, dẹp, bốn cạnh
bằng nhau.

FIFO

Viết tắt của cụm từ “First In First Out”
Một dạng bộ nhớ lưu dữ liệu hoạt động theo nguyên tắc dữ liệu
được đọc ra theo đúng thứ tự dữ liệu được ghi vào.


full-duplex

Truyền nhận song công. Một ngoại vi hỗ trợ “full-duplex” có
thể vừa truyền và nhận dữ liệu tại cùng một thời điểm.

Pipeline

Kỹ thuật “đường ống”
Một kỹ thuật thiết kế vi xử lý cho phép các lệnh có thể thực thi
theo kiểu gối đầu nhau nhằm tận dụng thời gian rỗi giữa các
công đoạn, qua đó làm tăng tốc độ thực hiện lệnh của vi xử lý.

MCU

Viết tắt của “Microcontroller Unit”
Bộ vi điều khiển

Reset

Là một thuật ngữ chỉ một tác động hay hoạt động khôi phục lại
trạng thái ổn định ban đầu (trạng thái gốc).

Clock

Là xung nhịp đồng bộ

CPU

Viết tắt của cụm từ “Central Processing Unit”

Là đơn vị xử lý trung tâm thực hiện giải mã, phân tích và thực
thi các lệnh lập trình.

Flash

Tên của loại bộ nhớ được sử dụng làm bộ nhớ chương trình

Stack

Bộ lưu trữ địa chỉ truy cập lệnh

Watchdog

Bộ định thời giám sát hoạt động của CPU để tránh trường hợp
CPU bị treo khi đang xử lý.

Wake up

Là trạng thái sẵn sàng hoạt động

UART

Viết tắt của cụm từ “Universal Asynchronous Receiver

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

9



Nội dung

Thuật ngữ hoặc ký hiệu

Mô tả
Transmitter”
Ngoại vi truyền nhận nối tiếp bất đồng bộ.

ADC

Viết tắt của cụm từ “Analog Digital Conveter”
Ngoại vi chuyển đổi tín hiệu tương tự thành một giá trị số.

Counter

Bộ đếm sự kiện

DIR

Viết tắt của “Direction”
Chiều

GPIO

Viết tắt của cụm từ “General Purpose Input/Output”
Cổng truy xuất đa chức năng

Port


Cổng truy xuất

PU

Viết tắt của “Pull-Up”
Kéo lên. Một chân giao tiếp hay tín hiệu được “kéo lên” nghĩa
là chân giao tiếp hay tín hiệu đó sẽ có mức điện áp cao.

Postscaler

Bộ chia tần sau

Prescaler

Bộ chia tần trước

PWM

Viết tắt của cụm từ “Pulse Width Modulation”
Điều chế độ rộng xung

SPCS

Viết tắt của cụm từ “Special Program Chip Select”
Chân chọn lập trình

Timer

Bộ định thời


Watchdog timer

Bộ định thời cảnh báo

WDT

Viết tắt của cụm từ “WatchDog Timer”
Bộ định thời cảnh báo

OSC

Dao động

Weak pull-up

Mức kéo lên yếu

SPI

Viết tắt của cụm từ “Serial Peripheral Interface”
Giao tiếp ngoại vi nối tiếp

SCK

Clock nối tiếp của ngoại vi SPI

SDI

Viết tắt của cụm từ “Serial data input”
Ngõ vào dữ liệu nối tiếp của ngoại vi SPI


© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

10


Nội dung

Thuật ngữ hoặc ký hiệu

Mô tả

SDO

Viết tắt của cụm từ “Serial data output”
Ngõ ra dữ liệu nối tiếp của ngoại vi SPI

SSx

Lựa chọn slave hoạt động của ngoại vi SPI

Master

Chủ (ngoại vi điều khiển những ngoại vi tương đương khác)

Slave

Tớ (ngoại vi chịu sự điều khiển từ ngoại vi tương đương khác)


R

Viết tắt của từ “Read”
Chỉ khả năng có thể truy xuất đọc thông tin.

W

Viết tắt của từ “Write”
Chỉ khả năng có thể tác động ghi (thay đổi) nội dung dữ liệu.

W(0)

Vị trí bit chỉ được phép xóa hoặc ghi vào giá trị 0.

BS

Thanh ghi Bank Select. Nó dùng để chọn lựa băng cho RAM

C, HC, Z

Các bit trạng thái của ALU: Carry, Half Carry, Zero

GIE

Viết tắt của cụm từ “Global Interrupt Enable”
Bit cho phép ngắt toàn cục

PC


Viết tắt của cụm từ “Program counter”
Bộ đếm chương trình

PWD

Viết tắt của cụm từ “Power-Down”
Bit thông báo chế độ tiết kiệm nguồn

HI

Byte cao của thanh ghi kết quả phép nhân

LO

Byte thấp của thanh ghi kết quả phép nhân

WDTO

Viết tắt của cụm từ “Watchdog time-out”

TS

Viết tắt của cụm từ “Top-of-Stack”

ACC

Viết tắt của từ Accumulator
Thanh ghi dùng để lưu trữ của kết quả trung gian sau khi xử lý
toán học và logic


Bypass

Bỏ qua (lệnh tiếp theo)

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

11


Giới thiệu

1. Giới thiệu
SG8V1 là một vi điều khiển RISC 8-bit đa dụng, sử dụng cho nhiều mục đích khác nhau. Tập
lệnh gồm 60 lệnh, độ rộng mỗi từ lệnh 16-bit. Bộ nhớ chương trình 64Kx16 và bộ nhớ dữ liệu
16KB. Có 91 thanh ghi có chức năng đặc biệt. SG8V1 được tích hợp rất nhiều ngoại vi như
Watchdog Timer, Timer/Counter, PWM, UART, I2C, SPI,… SG8V1 có thể được sử dụng để làm
bộ phận điều khiển trung tâm của rất nhiều ứng dụng như máy giặt, máy điều hòa, robot, thiết bị
truyền thông, quang báo điện tử,…
Đặc tính chung


Tần số hoạt động: 1 MHz - 20 MHz



Tập lệnh 60 lệnh, độ rộng từ lệnh 16-bit




Có 19 nguồn ngắt



Có 15 mức stack chương trình



Bộ nhớ chương trình Flash bên trong chip, dung lượng 64K x 16



Bộ nhớ dữ liệu bên trong chip, dung lượng 16K x 8



Bộ nhân 8x8 bằng phần cứng, thực hiện đơn chu kỳ



Có chế độ tiết kiệm năng lượng



Có chế độ bảo mật bộ nhớ chương trình



Trình biên dịch Assembly/C




Có Watchdog Timer



Điện áp hoạt động 3.3V



Package cho chip LQFP 48 chân

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

12


Giới thiệu
Ngoại vi


Watchdog Timer: 16-bit, sử dụng xung clock hệ thống



Timer0: Timer/counter 8-bit, kết hợp với 8-bit prescaler; sử dụng xung clock hệ thống
hoặc xung clock ngoài




Timer1: Timer/counter 16-bit, kết hợp với prescaler; sử dụng xung clock hệ thống hoặc
xung clock ngoài; hỗ trợ chế độ capture/compare



Timer2: Timer/counter 10-bit, kết hợp với period register, prescaler và postscaler 10-bit;
sử dụng xung clock hệ thống



Timer3: Timer/counter 10-bit, kết hợp với period register, prescaler và postscaler 10-bit;
sử dụng xung clock hệ thống



GPIO: có 4 port GPIO, mỗi port 8-bit



PWM1: độ phân giải 10-bit



PWM2: độ phân giải 10-bit




UART1: truyền nhận full-duplex, FIFO 2 mức, có hỗ trợ chế độ truyền liên tục



UART2: truyền nhận full-duplex, FIFO 2 mức, có hỗ trợ chế độ truyền liên tục



UART3: truyền nhận full-duplex, FIFO 2 mức, có hỗ trợ chế độ truyền liên tục



SPI: truyền nhận full-duplex, hỗ trợ 2 chế độ Master và Slave



I2C: Hỗ trợ chế độ truyền Standard và Fast, chế độ Master và Slave, chế độ truyền 7-bit
địa chỉ và 10-bit địa chỉ, chế độ Multi-master, chế độ General-call



ADC: Hỗ trợ 4 ngõ vào analog; độ phân giải 8-bit

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

13



Giới thiệu

1.1. Sơ đồ chân
VDD x 2

GND x 2
portc[7] / SS
portc[6] / SDO
portc[5] / SDI
portc[4] / SCK
portc[3] / PWM2
portc[2] / PWM1
portc[1] / TX1
portc[0] / RX1

RST
OSC1
OSC2
porta[7]
porta[6]
porta[5]
porta[4]
porta[3]
porta[2]
porta[1]
porta[0]

portb[7] / spdatao
portb[6] / spdatai
portb[5] / spclk

portb[4] / T0CLK
portb[3] / TX2
portb[2] / RX2
portb[1]
portb[0]

spcs

SG8V1

portd[7] / T1CLK
portd[6] / CC
portd[5] / SDA
portd[4] / SCL
portd[3] / INT3
portd[2] / INT2
portd[1] / INT1
portd[0] / INT0

VIN1
UART3

VIN2

TX3

VIN3
VIN4
VREF


RX3
CAP

ADC

Hình 1-1: Sơ đồ chân

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

14


Giới thiệu
Bảng 1-1: Mô tả chân
Tên chân
VDD x 2
GND x 2
/RST
OSC1
OSC2
Porta [7:0]
Portb[7:0]
Portc[7:0]
Portd[7:0]
spcs
spclk
spdatai
spdatao

T0CLK
TX1
RX1
TX2
RX2
TX3
RX3
PWM1
PWM2
SCK

Loại chân
input
Input
input
input
output
In / out
In / out
In / out
In / out
Input
Input
Input
Output
Input
Output
Input
Output
Input

Output
Input
Output
Output
In / Out

SDI
SDO
SS
INT0
INT1
INT2
INT3
SCL
SDA
CC

Input
Output
Input
Input
Input
Input
Input
In / Out
In / Out
In / Out

T1CLK
VIN1

VIN2
VIN3
VIN4
VREF
CAP

Input
Input
Input
Input
Input
Input
Input

© 2012 ICDREC

Mô tả chân
Nguồn cung cấp
Mass
Reset
Ngõ vào thạch anh
Ngõ ra thạch anh
Bidirectional IO port
Bidirectional IO port
Bidirectional IO port
Bidirectional IO port
Chip select cho bộ lập trình Flash
Clock cho bộ lập trình Flash
Dữ liệu ngõ vào cho bộ lập trình Flash
Dữ liệu ngõ ra cho bộ lập trình Flash

Clock ngoài dùng cho Timer 0
Ngõ truyền của UART1
Ngõ nhận của UART1
Ngõ truyền của UART2
Ngõ nhận của UART2
Ngõ truyền của UART3
Ngõ nhận của UART3
Ngõ ra của PWM1
Ngõ ra của PWM2
Xung clock cho SPI.
Chế độ Master: out / Chế độ Slave: in
Dữ liệu ngõ vào SPI
Dữ liệu ngõ ra SPI
Tín hiệu Slave Select cho SPI
Ngắt ngoài 0
Ngắt ngoài 1
Ngắt ngoài 2
Ngắt ngoài 3
Xung clock nối tiếp cho I2C
Dữ liệu nối tiếp cho I2C
Chân cho Capture/Compare
Chế độ Capture: input
Chế độ Compare: output
Clock ngoài dùng cho Timer 1
Ngõ vào kênh 1 cho ADC
Ngõ vào kênh 2 cho ADC
Ngõ vào kênh 3 cho ADC
Ngõ vào kênh 4 cho ADC
Điện áp chuẩn cho ADC
Chân nối tụ điện


SG8V1 – Hướng dẫn sử dụng

15


Giới thiệu

1.2. Sơ đồ khối
Vi điều khiển SG8V1 bao gồm phần lõi vi xử lý 8-bit và các ngoại vi xung quanh. Các ngoại vi
bao gồm: IO Port (GPIO), Watchdog Timer (WDT), Timer0 (TMR0), ADC, Timer1 (TMR1),
Timer2 (TMR2), Timer3 (TMR3), PWM1, PWM2, SPI, I2C, UART1, UART2, UART3. Bộ nhớ
chương trình 64Kx16 được thực hiện bằng Flash. Một module điều khiển việc lập trình cho Flash
được tích hợp bên trong.

SG8V1
GPIO
PORTs

WDT

TMR0

ADC

TMR1

TMR2

TMR3


Microprocessor Core
SG8V1

Flash 64kx16

PWM1

PWM2

Serial
Flash
Programming
Controller

UART1

UART2

UART3

I2C
SPI

Hình 1-2: Sơ đồ khối của SG8V1

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng


16


Kiến trúc pipeline

2. Kiến trúc pipeline
2.1. Các bước thực hiện lệnh
Về cơ bản, mỗi một lệnh đơn được chia ra làm 3 bước để thực hiện: FETCH, DECODE, and
EXECUTE (). Mỗi bước kéo dài một chu kỳ xung clock. Như vậy, mỗi lệnh đơn sẽ được thực
hiện trong 3 chu kỳ xung clock.
Nhận lệnh từ bộ
nhớ chương trình

Chu kỳ xung clock 1

FETCH

Chu kỳ xung clock 2

DECODE

Giải mã lệnh

Chu kỳ xung clock 3

EXECUTE

Thực hiện lệnh

Hình 2-1: Các bước thực hiện lệnh

FETCH: Nhận lệnh từ bộ nhớ chương trình Flash.
DECODE: Giải mã lệnh vừa nhận được ở tầng FETCH.
EXECUTE: Thực hiện các công việc tính toán và ghi kết quả vào đích đến (thanh ghi, bộ nhớ dữ
liệu)

2.2. Kiến trúc pipeline 3 tầng
Kiến trúc pipeline 3 tầng được thực hiện nhằm cải thiện tốc độ hoạt động của SG8V1. Theo đó, 3
bước khác nhau của 3 lệnh liên tiếp sẽ được thực hiện đồng thời. Điều này làm tốc độ hoạt động
của SG8V1 tăng gấp 3 lần. Nghĩa là, mặc dù mỗi lệnh đơn được thực hiện trong 3 chu kỳ xung
clock, nhưng tính trung bình, thời gian để thực hiện chỉ là 1 chu kỳ xung clock. (xem Hình 2-2 và
Hình 2-3)

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

17


Kiến trúc pipeline

Chu kỳ

1

2

3

Lệnh 1


F

D

E

Lệnh 2

FETCH

DECODE EXECUTE

4

5

F

D

FETCH

6

E

DECODE EXECUTE

Hình 2-2: Hoạt động thực hiện lệnh với kiến trúc không có pipeline


Chu kỳ

1

Lệnh 1

F

Lệnh 2

2

3

D

E

F

D

E

F

D

Lệnh 3


5

4

E

Hình 2-3: Thực hiện lệnh với kiến trúc có pipeline

2.3. Cách tính số chu kỳ thực hiện lệnh
Trung bình các lệnh thường được thực hiện trong 1 chu kỳ xung clock, như được thể hiện ở Hình
2-4.
Chu kỳ

Lệnh 1
Lệnh 2
Lệnh 3
Lệnh 4

1

2

3

4

5

F


D

E

F

D

E

F

D

E

F

D

6

E

Hình 2-4: Thực hiện lệnh thường với kiến trúc đường ống

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng


18


Kiến trúc pipeline
Đối với các lệnh bypass, trình tự thực hiện lệnh sẽ được thực hiện như Hình 2-5. Theo đó, trung
bình mỗi lệnh bypass sẽ được thực hiện trong 2 chu kỳ xung clock.
Chu kỳ

1

2

3

Lệnh 1: Lệnh Bypass

F

D

E

F

D

Lệnh 2: Lệnh bị bypass

4


6

Lệnh này không được thực hiện

F

Lệnh 3

5

Lệnh 4

D

E

F

D

E

Hình 2-5: Thực hiện lệnh bypass với kiến trúc đường ống
Đối với các lệnh rẽ nhánh đơn chu kỳ, trình tự thực hiện lệnh được thể hiện như Hình 2-6. Theo
đó, trung bình mỗi lệnh rẽ nhánh đơn chu kỳ sẽ được thực hiện trong 2 chu kỳ xung clock.
Chu kỳ

1


2

3

Lệnh 1: Lệnh rẽ nhánh

F

D

E

Lệnh 2

F

Lệnh 3: Lệnh mới ở địa chỉ nhảy tới

4

5

6

Lệnh này sẽ không được thực hiện
F

D

E


F

D

E

Hình 2-6: Thực hiện lệnh rẽ nhánh đơn chu kỳ với kiến trúc đường ống
Đối với lệnh rẽ nhánh 2 chu kỳ (lệnh nhảy dài), trình tự thực hiện lệnh được thể hiện như Hình 27. Theo đó, trung bình mỗi lệnh rẽ nhánh 2 chu kỳ sẽ được thực hiện trong 3 chu kỳ xung clock.

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

19


Kiến trúc pipeline
Chu kỳ

Lệnh 1 (chu kỳ 1): Lệnh rẽ nhánh 2 chu kỳ
Lệnh 1 (chu kỳ 2): Lệnh rẽ nhánh 2 chu kỳ

1

2

3

F


D

E

F

D

Lệnh 2

F

Lệnh 3: Lệnh mới ở địa chỉ nhảy tới
Lệnh 4

4

5

6

7

E
Lệnh này không được
thực hiện
F

D


E

F

D

E

Hình 2-7: Thực hiện lệnh rẽ nhánh 2 chu kỳ với kiến trúc đường ống

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

20


Chế độ tiết kiệm năng lượng

3. Chế độ tiết kiệm năng lượng (IDLE Mode)
3.1. Mô tả
SG8V1 cho phép người dùng quản lý xung clock cung cấp cho CPU và các ngoại vi. Mỗi thành
phần này hoạt động với một nguồn cấp clock riêng. Các nguồn clock này có thể tắt/mở bằng cách
lập trình.
SG8V1 hỗ trợ 2 chế độ:


Đang hoạt động (Run mode)




Chế độ tiết kiệm năng lượng (IDLE mode)

Ở chế độ đang hoạt động, clock cấp cho CPU và ngoại vi nhịp liên tục (kể cả trong trường hợp
ngoại vi không hoạt động). Nếu muốn tiết kiệm năng lượng khi CPU đang rảnh rỗi, người sử
dụng có thể sử dụng lệnh IDLE để đưa CPU vào chế độ IDLE. Ở chế độ này, clock cấp cho CPU
sẽ dừng lại (xem Hình 3-1). Một chú ý là trước khi thực hiện lệnh IDLE, người dùng nên xóa các
bit ON/OFF của các ngoại vi không sử dụng. Các bit này được mô tả trong Tập Thanh Ghi Có
Chức Năng Đặt Biệt (Special Function Registers).

Clock từ
thạch anh

Clock cấp
cho CPU

Clock cấp cho ngoại
vi đang tắt

Clock cấp cho ngoại
vi đang mở

Vào chế cho nghỉ

wake up

Hình 3-1: Mô tả clock trong chế độ nghỉ
Sau khi đã vào chế độ tiết kiệm năng lượng, CPU có thể được đánh thức từ nhiều cách: ngắt hoặc
tràn Watchdog.

Để CPU có thể được đánh thức từ ngắt, người dùng phải cho phép các sự kiện ngắt xảy ra. Trong
quá trình CPU thức giấc, các tình huống sau có thể xảy ra:

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

21


Chế độ tiết kiệm năng lượng


Nếu bit GIE/GIEH được set lên 1 (ngắt ưu tiên cao) hay cả hai bit GIE/GIEH và
PIE/GIEL được set lên 1(ngắt ưu tiên thấp), chương trình sẽ nhảy đến vec-tơ ngắt tương
ứng. Ngược lại, chương trình sẽ thực hiện tiếp tục quá trình trước đó.

Clock từ
thạch anh
Clock cấp
cho CPU

Clock cấp cho ngoại
vi đang tắt

Clock cấp cho ngoại
vi đang mở

PC


PC

PC+1

PC+2

PC+3

PC+4

PC+5

PC+6

PC+7

wake up

Vào chế độ IDLE

Hình 3-2: Mô tả trường hợp CPU wake up và thực hiện tiếp tục quá trình trước đó

Clock từ
thạch anh

Clock cấp
cho CPU

Clock cấp cho ngoại
vi đang tắt


Clock cấp cho ngoại
vi đang mở

A: Vector ngắt
PC

PC

PC+1

PC+2

PC+3

PC+4

vào chế độ DILE

A

A+1

A+2

wake up

Hình 3-3: Mô tả trường hợp CPU wake up và vào chương trình ngắt



Việc tràn Watchdog sẽ đánh thức CPU khi nó đang ở chế độ IDLE. Tuy nhiên, người sử
dụng cần lưu ý là nếu CPU đang ở chế độ hoạt động, sự kiện tràn Watchdog sẽ làm cho
SG8V1 khởi động lại. Vì vậy, khi CPU đang hoạt động, người sử dụng nên xóa
Watchdog bằng lệnh CLRWDT trước khi bị tràn.

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

22


Chế độ tiết kiệm năng lượng

3.2. Thanh ghi báo trạng thái CPU - CPUSTA
Tên
SRE

Bit
[7]

Mô tả

R/W
R/W

Xem 3.4.2.2 Thanh ghi báo trạng
thái CPU – CPUSTA

SOV


[6]

R/W(0)

Xem 3.4.2.2 Thanh ghi báo trạng
thái CPU – CPUSTA

SUNF

[5]

R/W(0)

Xem 3.4.2.2 Thanh ghi báo trạng
thái CPU – CPUSTA

Bit dự trữ

[4:2]

U

PWD

[1]

R

Không thực hiện

Cờ báo đã vào chế độ IDLE
0: Khi bật nguồn hoặc sau
lệnh CLRWDT
1: Khi CPU vào chế độ
IDLE

WDTO

[0]

R

Cờ thông báo tràn Watchdog
0: Khi bật nguồn hoặc sau
lệnh CLRWDT hoặc lệnh
IDLE
1: Khi tràn Watchdog

3.3. Bộ đếm chương trình (PC)
Bộ đếm chương trình của SG8V1 là một thanh ghi 16-bit. Nó sử dụng làm địa chỉ của bộ nhớ
chương trình.

3.4. Stack
Giá trị của thanh ghi PC được xếp vào stack khi một trong các sự kiện sau được thực hiện: sau
lệnh LCALL, SCALL, PUSH và đáp ứng ngắt. Ngược lại, đối với lệnh RET, RETA, RETI và
POP giá trị của PC sẽ được lấy ra khỏi stack.
Trong SG8V1, Stack hoạt động như một RAM có 15 word (mỗi word 16-bit) với địa chỉ để truy
xuất là Stack-Pointer (SP) 4 bit. SP có thể truy xuất được bằng phần mềm. Stack chỉ có thể chứa
tối đa 15 giá trị của PC. Do đó, CPU chỉ có thể xếp PC vào Stack được nhiều nhất 15 lần. Lần
xếp thứ 16 được thực hiện chương trình có thể sẽ bị sai.

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

23


Chế độ tiết kiệm năng lượng
Quá trình xếp PC vào stack được thực hiện như sau:


Tăng Stack-Pointer thêm 1



Ghi giá trị PC vào vùng nhớ của stack được trỏ bởi Stack-Pointer vừa nhận được

Quá trình lấy PC ra khỏi stack được thực hiện như sau:


Giá trị PC cần lấy chính là giá trị của vùng nhớ trong Stack được trỏ bởi Stack-Pointer
hiện tại.



Sau khi lấy xong giá trị của PC, Stack-Pointer giảm đi 1.

3.4.1. Truy xuất giá trị mới nhất của Stack (TS: Top of Stack)
TS là giá trị vùng nhớ của Stack được trỏ bởi Stack-Pointer (SP). TS có thể đọc/ghi bằng phần
mềm. TS được chia thanh 2 thanh ghi TSH (chứa byte cao của TS) và TSL (chứa byte thấp của

TS). Người dùng có thể đọc cặp thanh ghi TSH và TSL để biết được giá trị hiện tại của TS.
Khi mới khởi động, SP bằng 0. Tại vị trí này, giá trị của TS không có nghĩa (người dùng không
sử dụng giá trị này).

Chú ý: Người sử dụng nên cấm ngắt toàn cục trong khi truy xuất stack để tránh việc tràn stack
không mong muốn.

stack [14:0]
1111
Thanh ghi Top of Stack
TSH

TSL

0Ch

10h

Con trỏ stack
SP[3:0]
0C10h

-

1101

1101

0000


Hình 3-4: Stack và các thanh ghi liên quan

3.4.2. Stack Pointer (SP)
3.4.2.1. Mô tả
Stack-Pointer (SP) là thanh ghi 4 bit dùng để trỏ giá trị mới nhất của stack (Top of stack). SP có
thể đọc/ghi bằng phần mềm.
Mỗi lần xếp PC vào stack, SP tăng thêm 1.
© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

24


Chế độ tiết kiệm năng lượng
Mỗi lần lấy giá trị PC ra khỏi stack (POP, trở về từ chương trình ngắt hay chương trình con), SP
giảm đi 1.
Việc đọc/ghi trực tiếp TS bằng phần mềm không ảnh hưởng đến giá trị của SP.
Trong quá trình sử dụng stack, người dùng nên chú ý các điểm sau:
Khi stack đã đầy (SP = 15), nếu tiếp tục xếp PC vào stack sẽ làm tràn stack ngưỡng trên. Bit
SOV sẽ set lên 1 (bit này chỉ có thể xóa khi bật nguồn hoặc xóa bằng phần mềm).
Tương tự, khi stack đang rỗng (SP=0), việc lấy PC ra khỏi stack sẽ làm cho bit SUNF bật lên
1(bit này chỉ có thể xóa khi bật nguồn hoặc xóa bằng phần mềm).
Khi có các sự kiện trên, hai trường hợp sau xảy ra:


Bit SRE bằng 1 sẽ làm SG8V1 khởi động lại.




Bit SRE bằng 0 không làm SG8V1 khởi động lại. Tuy nhiên, giá trị của TS và SP sẽ
không thay đổi.

3.4.2.2. Thanh ghi báo trạng thái CPU – CPUSTA

© 2012 ICDREC

SG8V1 – Hướng dẫn sử dụng

25


×