Upload
dinh-van-nghia
View
64
Download
10
Embed Size (px)
DESCRIPTION
8535
Citation preview
THĂNG LONG UNIVERSITY
NGÀNH: MẠNG MÁY TÍNH & VIỄN THÔNG
BÁO CÁO
THỰC HÀNH ĐIỆN TỬ SỐ
ĐỀ TÀI:SỬ DỤNG ATMEGA 8535 ĐO VÀ HIỂN THỊ NHIỆT ĐỘ
NHÓM THỰC HIỆN:
SINH VIÊN MSV
VŨ ĐỨC CHÍNH A08811
HOÀNG SƠN TÙNG A08277
VÕ TRẦN HOÀNG A08496
TRẦN THỊ VÂN ANH A08170
NGUYỄN VĂN ĐIỆP A08305……
GIẢNG VIÊN:NGUYỄN TRUNG ĐỒNG
NIÊN HỌC:2007_2008
PHẦN I
TỔNG QUAN ĐỀ TÀI
I.1 Đặt vấn đềNgày nay, những ứng dụng của Vi điều khiển đã đi sâu vào đời sống sinh hoạt và sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện dân dụng hiện nay đều có sự góp mặt của Vi Điều Khiển và vi xử lí . Ứng dụng vi điều khiển trong thiết kế hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn định của thiết bị và hệ thống. Ta sẽ thiết kế mạch đo và hiển thị nhiệt độ dựa trên những ứng dụng của vi điều khiển avr 8535
I.2 Mục tiêu đề tài Nghiên cứu về AVR và các vấn đề liên quan như thi công mạch nạp, các chương trình phần mềm hỗ trợ lập trình. Lập trình chip avr at90s8535 sử dụng bộ ADC 10 bit để lấy mẫu tín hiệu(nhiệt độ) và hển thị lên bộ led 7 thanh.
PHẦN II
Tổ chức phần cứng
1.SƠ LƯỢC VI ĐIỀU KHIỂN AVR AT 90S8535
AT 90S8535 là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa trên kiến trúc RISC. Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì nhịp xung, vì thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ở tần số 1 Mhz. vi điều khiển này cho phép người thiết kế có thể tối ưu hoá mức độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lí. Phần cốt lõi của AVR kết hợp tập lệnh phong phú về số lượng với 32 thanh ghi làm việc đa năng. Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (Arithmetic Logic Unit), cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp. Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC thông thường .
2 .Đặc tính của AVR AT 90S8535Được chế tạo theo kiến trúc RISC, hiệu cao và điện năng tiêu thụ thấp Bộ lệnh gồm 118 lệnh, hầu hết đều thực thi chỉ trong một chu kì xung nhịp 32x8 thanh ghi làm việc đa dụng. 8KB Flash ROM lập trình được ngay trên hệ thống o Giao diện nối tiếp SPI cho phép lập trình ngay trên hệ thống o Cho phép 1000 lần ghi/xoá Bộ EEPROM 512 byte . o Cho phép 100.000 ghi/xoá. Bộ nhớ SRAM 512 byte. Bộ biến đổi ADC 8 kênh, 10 bit . 32 ngõ I/O lập trình được
Bộ truyền nối tiếp bất đồng bộ vạn năng UART Vcc=2.7V đến 6V Tốc độ làm việc: 0 đến 8 Mhz Tốc độ xử lí lệnh đến 8 MIPS ở 8 MHz nghĩa là 8 triệu lệnh trên giây Bộ đếm thời gian thực (RTC) với bộ dao động và chế độ đếm tách biệt 2 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số tách biệt và chế độ bắt mẫu. Ba kênh điều chế độ rộng xung PWM Có đến 13 interrupt ngoài và trong Bộ định thời Watchdog lập trình được. tự động reset khi treo máy Bộ so sánh tương tựBa chế độ ngủ : chế độ rỗi (Idle), tiết kiệm điện ( Power save) và chế độ Power DownSau đây là bảng so sánh những đặc tính giữ AT90S8535 với họ AT89C51.
Bảng 1:Đặc tính
AT90S8535 AT89C51 Flash ROM 8K Byte có thể lập trình trên hệ thống 4 KB EEPROM 512 byte Không RAM nội
512 byte SRAM 128 byte RAM Bộ Timer 2 bộ timer 8 bit 1 bộ timer 16 bit 1 bộ watchdog timer 2 bộ timer 16 bit Bộ ADC 1 bộ ADC 8 kênh 10 bit Không Giao thức truyền nối tiếp chủ/tớ Có Không Bộ PWM Bộ điều chế PWN 8,9và 10bit Không Bộ truyền nối tiếp UART Có 2 chế độ Có 4 chế độBộ so sánh tương tựCó Không Nguồn ngắt (Interrupt) Có 17 nguồn ngắt Có 6 nguồn ngắt Tần số hoạt động 0 ÷8 Mhz
(0 ÷24 Mhz)/12 Điện áp tiêu thụThạch anh 4 Mhz , VCC=3V: Trạng thái tích cực : 6.4mA Trạng thái rỗi : 1.9mA Trạng Power Down : < 1 uA Thạch anh 12Mhz, VCC=3V: Trạng thái tích cực : 20 mA Trạng thái rỗi : 5 mATrạng Power Down : < 40 uA Giá thành ( tại thị trường Việt Nam) 110.000đ 17.000đQua bảng so sánh có thể thấy rằng AT908535 không những thừa kế những ưu điểm của AT89C51 mà còn có những đặc tính mới khá hoàn thiện, hiệu suất cao hơn hẳn và tốc độ xử lí cao gấp nhiều. Tuy nhiên một trở ngại lớn đó là giá thành còn khá cao (có thể một phần do chưa được sử dụng rộng rãi).
3.Ý nghĩa các chân của AT 908535
-VCC:Điện áp nguồn nuôi.- GND: Nối mass.- PortA (PA7…PA0): PortA là Port vào/ ra hai hướng 8 bit, các chân của Port có các điện trở nối lên nguồn dương. Các chân ra của Port A có thể cho phép dòng điện 20mA đi qua và trực
tiếp điều khiển LED hiển thị.Khi các chân PA0 đến PA7 là các lối vào và được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điện trở nối lên nguồn dương được kích hoạt. Các chân của cổng A ở vào trạng thái có điện trở cao khi tín hiệu reset ở mức tích cực hoặc ngay cả khi không có tín hiệu xung clock.Port A cung cấp các đường địa chỉ/ dữ liệu vào/ ra hoạt động theo kiểu đa hợp kênh khi dùng bộ nhớ SRAM ở bên ngoài.Port còn có thêm chức năng là ngõ vào tương tự và đưa đến bộ chuyển đổi AD.Các Port B, C, D tương tự như Port A.
- RESET: Lối vào đặt lại. Bộ vi điều khiển sẽ được đặt lại khi chân này ở mức thấp trong hơn 50ns, các xung ngắn hơn không tạo ra tín hiệu đặt lại.
- XTAL1: Lối vào bộ khuếch đại đảo và lối vào mạch tạo xung nhịp bên trong.- XTAL2: Lối ra bộ khuếch đại đảo.XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo. Bộ khuếch đại này được bố trí để làm bộ tạo dao động trên chip. Một bộ tinh thể thạch anh hoặc một bộ cộng hưởng gốm có thể được sử dụng. Để điều khiển bộ vi điều khiển từ một nguồn xung nhịp bên ngoài, chân XTAL2 để trống, còn chân XTAL1 được nối với bộ dao động bên ngoài.
- ICP: Là chân vào cho chức năng bắt tín hiệu vào bộ timer/ counter1.
- OC1B: Là chân ra PWM, ngõ ra so sánh của timer/ counter1.
_ ALE: Là chân tín hiệu cho phép chốt địa chỉ được dùng khi truy nhập bộ nhớ ngoài. Xung ALE được dùng để chốt 8 bit địa chỉ thấp vào một bộ chốt địa chỉ trong chu kỳ truy cập bộ nhớ thứ nhất. Sau đó các chân AD0-7 được dùng làm các
đường dữ liệu trong chu kỳ truy nhập bộ nhớ thứ hai.
4.Tổ chức vùng nhớ AVR AT90S8535
Các bộ vi xử lí AVR có cấu trúc Harvard nghĩa là có bộ nhớ chương trình và bộ nhớ dữ liệu riêng.
Bộ nhớ chương trình là loại bộ nhớ Flash, 16 bit, có dung lượng 8Kbyte. Bộ nhớ chương trình được truy nhập theo từng chu kỳ đồng hồ và một lệnh được ghi vào thanh ghi lệnh.
Bộ nhớ chương trình, bên cạnh các lệnh lưu trữ, còn chứa các vectơ ngắt ở đầu địa chỉ(xem phần ngắt). Chương trình hiện tại sẽ bắt đầu ở phía bên kia vùng cho các vectơ ngắt.
Bộ nhớ dữ liệu: có 4 vùng khác nhau Vùng tập thanh ghi: gồm 32 thanh ghi có độ rộng 8 bit. Vùng các thanh ghi vào ra: gồm 64 thanh ghi vào ra, mỗi
thanh ghi có độ rộng 8 bit. Các thanh ghi này thực chất là một phần của bộ nhớ SRAM trên chip và cũng có thể được truy nhập như bộ nhớ SRAM có địa chỉ từ $20 -> $5F hoặc như các thanh ghi I/O có địa chỉ từ $00 -> $3F. Hầu hết các thanh ghi này được trao đổi như các thanh ghi I/O chứ không phải như SRAM.
+ Vùng nhớ SRAM bên trong(RAM đa dụng): gồm 512 byte. Bộ nhớ SRAM sử dụng cho ngăn xếp cũng như để lưu trữ các biến.
+ Vùng EEPROM: gồm 512 byte và được truy nhập theo bản đồ bộ nhớ tách biệt. Địa chỉ bắt đầu của bộ nhớ EEPROM là $0000. Bộ nhớ này có thể được đọc/ghi bằng phần mềm.
Hoạt động của các bộ phận trên AVR AT90S8535 + Bộ nhớ EEPROM: được truy nhập qua các thanh ghi truy
nhập EEPROM, cụ thể là: thanh ghi địa chỉ EEPROM [EEAR], thanh ghi dữ liệu EEPROM [EEDR] và thanh ghi
điều khiển EEPROM [EECR], Để truy nhập EEPROM ta phải trải qua các trình tự sau: cho địa chỉ cần truy nhập (vào thanh ghi địa chỉ) -> đọc hay ghi (vào thanh ghi điều khiển) -> dữ liệu cần đọc hoặc ghi (qua thanh ghi dữ liệu).
+ Bộ nhớ SRAM: được truy nhập bằng cách sử dụng nhiều lệnh truy nhập dữ liệu trực tiếp hoặc gián tiếp qua các con trỏ X,Y,Z. Thời gian truy nhập bộ nhớ SRAM bằng 2 chu kỳ xung đồng hồ.
+ Các cổng vào ra (I/O): đều có 3 địa chỉ vào ra đi kèm, địa chỉ vào ra được cần đến để đặt cấu hình cho các bit riêng biệt thành lối vào hoặc thành lối ra; địa chỉ khác được cần đến để xuất ra dữ liệu tới các bit (hoặc tất cả) được đặt cấu hình thành lối ra và địa chỉ thứ 3 được cần đến để đọc dữ liệu từ các chân (hoặc tất cả) được cấu hình thành lối vào.
+ Bộ truyền nhận UART: Việc truyền dữ liệu được khởi tạo bằng cách ghi dữ liệu vào thanh ghi dữ liệu I/O UART [UDR].
Sơ đồ bộ nhận UART
Bộ so sánh Analog: so sánh các giá trị điện áp ở lối vào AIN0 (AC+) và AIN1 (AC-) với nhau. Nếu như điện áp lối vào AIN0 lớn hơn AIN1 thì lối ra bộ so sánh Analog (AC0) được đặt lên mức "1". Lối ra này có thể sử dụng cho bộ Timer/Counter 1 để Trigger hoặc xoá ngắt bộ so sánh Analog.
Sơ đồ bộ so sánh Analog
+ Bộ biến đổi tương tự sang số (ADC): với độ phân giải 10 bit/1 kênh. Bộ biến đổi ADC có bộ
dồn kênh 8 lối vào, mỗi lối có thể dẫn riêng lẻ tới ADC. Thời gian thực hiện cho tất cả các chuyển đổi từ 65 ms đến 260 ms. Bộ biến đổi ADC được
thực hiện qua 4 thanh ghi ADMUX, ADCSR, ADCH, ADCL và có thể hoạt động trong 2 chế độ:
quá trình biến đổi được người dùng khởi động (Single Conversion Mode), quá trình biến đổi diễn
ra liên tục (Free Running). Sơ đồ khối bộ ADC
+ Bộ định thời Watchdog: điều khiển được và được sử dụng làm thiết bị đánh thức trong các trường hợp phần mềm bị rơi vào một hoặc một số vòng lặp vô tận hoặc trong trường hợp việc thực thi
chương trình bị mắc lỗi. Bộ định thời Watchdog có một lối ra và có khả năng đặt lại bộ điều khiển.
Mạch định thời Watchdog timer được giữ nhịp từ bộ dao động RC riêng biệt trên chip. Bằng cách
điều khiển mạch chia tần số Watchdog timer, khoảng thời gian reset mạch Watchdog có thể được điều chỉnh. có khả năng thay đổi độ rộng đến một giá trị tuỳ ý. Tuy nhiên, mạch PWM dựa trên bộ
đếm.
+ Hoạt động điều biến độ rộng xung PWM: cho phép tạo ra một tín hiệu số có tần số cố định. Độ rộng của tín hiệu được thay đổi phù hợp với yêu cầu, có khả năng thay đổi độ rộng đến một giá trị tuỳ ý. Tuy nhiên, mạch PWM dựa trên bộ đếm thì mức độ thay đổi chỉ có thể dài bằng độ phân giải
của bộ đếm. + Cấu trúc ngắt: Bộ vi điều khiển AVR AT90S8535
có nguồn ngắt phong phú. Khả năng ngắt chu cấp cho hầu hết các thiết bị ngoại vi sao cho chương
trình chính không cần phải thường xuyên kiểm tra các thiết bị này.
+ Chế độ tiết kiệm năng lượng: Bộ điều khiển AVR có khả năng giảm năng lượng tiêu thụ để chuyển
sang chế độ ngủ: bit SE trong MCUCR được đặt và lệnh SLEEP được thực thi. Nếu một ngắt đã cho
phép xuất hiện trong khi MCU đang trong trạng thái ngủ thì MCU sẽ thức dậy thực thi đoạn
chương trình ngắt và lại tiếp tục trạng thái ngủ kể từ lệnh SLEEP tiếp theo. Nội dung các thanh ghi, SRAM và bộ nhớ I/O vẫn được giữ nguyên. Có 3
chế độ ngủ: Idle, Power-down, Power save.
5.Sơ đồ khối AVR AT90S8535 ghép nối tất cả các thiết bị
PHẦN III
TỔ CHỨC PHẦN MỀMChuong trinh dung AT mega 8535 do nhiet do
;Dung ATmega8535 do nhiet do bang LM35 tai cong ADC.0 - PA.0;Hien thi ket qua nhiet do bang 4 led 7 thanh ;cong PB (chon led) va PC (du lieu hien thi so)
; Chon thiet bi ..device AT90S8535
; Dinh nghia cac cong va thanh ghi; I/O Register Definitions.equ SREG =$3F.equ GIMSK =$3B.equ GIFR =$3A.equ TIMSK =$39 .equ TIFR =$38 .equ MCUCR =$35.equ TCCR0 =$33.equ TCNT0 =$32.equ TCCR1 =$30.equ TCNT1 =$2F.equ OCR1A =$2E.equ OCR1B =$2D.equ PORTA =$1B.equ DDRA =$1A.equ PINA =$19.equ PORTB =$18.equ DDRB =$17.equ PORTC =$15.equ DDRC =$14.equ ACSR =$08 .equ ADMUX =$07.equ ADCSR =$06.equ ADCH =$05.equ ADCL =$04.equ SPDR =$0F ;Dinh nghia cac bien dung trong chuong trinh; Variable Declarations.def temp = r16
.def isrsreg = r18
.def isrtemp1 = r19
.def isrtemp2 = r20
.def cseg = r21
.def seg0 = r22
.def seg1 = r23
.def seg2 = r24
.def seg3 = r25
;Dinh nghia dia chi ngat cua ADC.equ ADCCaddr=$00E
.cseg ; CODE segment.
;Interrupt Vectors.org 0 rjmp init ;Reset.org ADCCaddr ;ADC Conversion Complete
rjmp ADC_int;-----------------------------------------------;Han khoi tao;Initialization
init: ldi r16,$FF ;Cho phep 8 cong du lieu PB out DDRB,r16 ;Cong PB dung de giai ma dia chi led
ldi r16,$00;Khoi tao cong PBout PORTB,r16 ;Dua 0x00 ra cong PB
ldi r16,$FF ;Cho phep 8 cong du lieu PC out DDRC,r16out PORTC, r16 ;Cong PC hien thi du lieu
ldi r16,$01;Cong PA.0 dung de nhan tin hieu ADCout PINA,r16
sei ;Cho phep ngatldi r18,$EF ;Khoi tao tin hieu giai ma dia chi led
;-----------------------------------------------;Vong lap vo hanloop:
cli ;Cam ngat ldi r16,$FE ;Khoi tao ngat ADC.0 che do thu congout ADCSR,r16ldi r16,$28;Cho phep che do sleep cua CPUout MCUCR,r16sei ;Cho phep ngatsleep ;CPU nghi cho den khi ngat ADC hoan thanh
;-----------------------------------------------;Hien thi so lieu ra cac led 7 thanh;Ma hien thi led hang tram: 0111.0111 = 0x77;Ma hien thi led hang chu : 0011.1011 = 0x3B;Ma hien thi led hang chuc: 0001.1101 = 0x1D;Ma hien thi chu C : 0000.1110 = 0x0E;
cpi r18,$0E ; So sanh ma hien thi voi 0x0Ebreq ganr18 ; Neu =0x0E thi gan tro lai 0xEFrjmp continous ; Neukhong bang 0x0E thi tiep tuc
ganr18:ldi r18,$EF ; Gan tro lai gia tri r18 = 0xEF
continous:lsr r18 ; Dich thanh ghi r18 sang phai 1 bit cpi r18,$77 ; Neu r18 = 0x77 hien thi led hang trambreq ganseg0 ; Gan du lieu hang tram cho led hang tramcpi r18,$3B ; Neu r18 = 0x3B hien thi led hang chucbreq ganseg1 ; Gan du lieu hang chuc cho led hang chuccpi r18,$1D ; Neu r18 = 0x1D hien thi du lieu hang don
vibreq ganseg2 ; Gan du lieu hang don vi cho led don vicpi r18,$0E ; Neu r18 = 0x0E hien thi chu cai C
breq ganseg3 ; Gan du lieu chu C cho led cuoi cung
ganseg0:mov r16,seg0 ; Lay du lieu hang tramrjmp loopsub
ganseg1:mov r16,seg1 ; Lay du lieu hang chucrjmp loopsub
ganseg2:mov r16,seg2 ; Lay du lieu hang don virjmp loopsub
ganseg3:mov r16,seg3 ; Lay du lieu cho chu Crjmp ganchuC
loopsub:ldi r17, 1 ; Lay r17 = 1 de so sanhclc ; Xoa co nhosub r16, r17brcs ganso0 ; neu r16<1sub r16, r17brcs ganso1 ; neu r16<2sub r16, r17brcs ganso2 ; neu r16<3sub r16, r17brcs ganso3 ; neu r16<4sub r16, r17brcs ganso4 ; neu r16<5sub r16, r17brcs ganso5 ; neu r16<6sub r16, r17brcs ganso6 ; neu r16<7sub r16, r17brcs ganso7 ; neu r16<8sub r16, r17
brcs ganso8 ; neu r16<9sub r16, r17brcs ganso9 ; neu r16=9rjmp ganchuC
ganso0:cpi r18,$77brne ganso00ldi r19,$00rjmp exit ;Khong hien thi so 0
ganso00:ldi r19,$3F ;So 0rjmp exit
ganso1:ldi r19,$06;So1rjmp exit
ganso2:ldi r19,$5B; ;So 2rjmp exit
ganso3:ldi r19,$4F; ;So 3rjmp exit
ganso4:ldi r19,$66; ;So 4rjmp exit
ganso5:ldi r19,$6D; ;So 5rjmp exit
ganso6:ldi r19,$7D; ;So 6rjmp exit
ganso7:ldi r19,$07;So 7rjmp exit
ganso8:
ldi r19,$7F;So 8rjmp exit
ganso9:ldi r19,$6F;So 9rjmp exit
ganchuC:ldi r19,$39;ChuC
exit:out PORTB,r18 ;Vi tri led can hien thiout PORTC,r19 ;Du lieu can hien thi
;-----------------------------------------------;Ham tao tre de duy tri thoi gian hien thi cho tung leddelay:
ldi temp, $30d:
dec temp ;Giam temp = temp -1brne d ;Neu chua bang 0 thi quay lai nhan d:
;----------------------------------------------- rjmp loop ;Tro lai vong lap vo han
;-----------------------------------------------;Ham chuyen doi so ADC 10 bit thanh so 4 chu so he thap phan;Ham nay thuc hien khi xay ra ngat ADC - cap nhat gia tri moi cua ADC;Gia tri lon nhat cua 10 bit la 1024;Gia tri Vref = 2.048 V;Qui doi gia tri 10bit x 2 = 1024 x 2 = 2048;Voi LM35 thi 10mv/1C;Vay gia tri gan dung la 10 dec <-> 1C
ADC_int:cli ;Xoa ngat he thongin r0,ADCL ;Doc gia tri byte thap cua ADC (2bit)
in r1,ADCH ;Doc gia tri byte cao cua ADC (8bit)clc ;Xoa co nhoadd r0,r0 ;Nhan doi gia tri r0adc r1,r1 ;Nhan doi gia tri r1 co nho (r1:r0 11 bit)
;Convert and display value for output;Start value taken to be in r1:r0
clr r4 ;r4 chua gia tri hang ngandc1a:mov r2,r0 ;Lay gia tri byte thap
mov r3,r1 ;Lay gia tri byte cao n x 256 ldi r16,$e8 ;Lay gia tri 232 = 1000 - 3x256 sub r2,r16 ;Gia tri byte thap tru di 232 ldi r16,$3 ;lay gia tr 3 sbc r3,r16 ;Gia tri byte cao tru di 3 - C brcs dc1b ;Neu r1:r0 < 1000 nhay den dc1b inc r4 ;Neu r1:r0 > 1000 thi tang them r4 mov r0,r2 ;ket qua r1:r0 - 1000 luu vao r0 mov r1,r3 ;ket qua r1:r0 - 1000 luu vao r1 rjmp dc1a ;Tiep tuc lay r1:r0 - 1000dc1b: mov seg0,r4 ;Luu gia tri hang ngan vao seg0
clr r4 ;r4 chua gia tri hang tramdc2a:mov r2,r0 ;r1:r0 -100
mov r3,r1 ldi r16,100 ;Lay gia tri 100 sub r2,r16 ;r0 - 100 clr r16 ;Xoa r16 sbc r3,r16 ;r1 - C brcs dc2b ;Neu r1:r0 < 100 inc r4 ;Neu r1:r0 > 100 tang them r4 mov r0,r2 ;Luu gia tri r1:r0 - 100 mov r1,r3 rjmp dc2a ;Tiep tuc tru 100dc2b: mov seg1,r4 ;Luu gia tri hang tram vao seg1
clr r4 ;r4 chua gia tri hang chuc
dc3a:mov r2,r0 ;r1:r0 -10 ldi r16,10 ;Lay gia tri 10 sub r2,r16 ;r0 - 10 brcs dc3b ;Neu r0 < 10 inc r4 ;Neu r0 > 10 tang them r4 mov r0,r2 ;Luu r0- 10 rjmp dc3a ;tiep tuc tru 10dc3b: mov seg2,r4 ;Luu gia tri hang chuc
mov seg3,r0 ;luu gia tri hang don vi
sei ;Cho phep ngat he thongreti ;Ket thuc ngat tro ve chuong trinh