MỤC LỤC
 
Phần I Lý thuyết cơ bản của thiết bị điều tốc 3
I.1. Sự điều chỉnh tua bin và sự đièu chỉnh tua bin và phân loại máy điều. 3
I.1.1. Sơ l-ợc về lý thuyết về điều chỉnh tua bin thuỷ lực 3
I.1.2. Giới thiệu các loại máy điều tốc trong trạm thuỷ điện 5
I.2. NHU CầU CáC LOạI MáY đIềU TẩC TRONG TRạM THUÛ đIệN 9
I.3. XU H-ÍNG CHế TạO CáC LOạI MáY DIềU TẩC TRêN THế GIÍI 9 
I.4 Chế tạo máy điều tốc ở Việt Nam 11
Phần II. Nghiên cứu, chế tạo điều tốc điều chỉnh l-u l-ợng và điều tốc điều chỉnh phụ tải 
II.1 Nghiên cứu xử dụng các bộ vi xử lý (P), â thông dụng vào việc chế tạo máy điều tốc 13
II.1.1 Lựa chọn sử dụng vi xử lý 13
II.1.2. ứng dụng vi xử lý 8051 13
II.1.3 Nghiên cứu ứng dụng vi xử lý tại trung tâm nghiên cứu 
thuỷ điện nhỏ – Viện Khoa học Thuỷ lợi 15
II.1.4. Thông tin từ n-ớc ngoài 17
II.2. Nghiên cứu mở rộng bộ điều khiển điều tốc l-u l-ợng 
thành bộ điều khiển đa tác dụng 19
II.3. Xác định ph-ơng pháp điều chỉnh tua bin 20
II.3.1. Sơ đồ điều khiển 20
II.3.2. Sơ đồ khối chức năng 23
II.4 Thiết kế phần cứng 23
II.4.1 CPU 23
II.4.2 Khối hiển thị 24
II.4.3 Khối đo l-ờng tần số 25
II.4.4 Khối báo hiệu mực n-ớc 26
II.4.5 Tín hiệu đóng máy sự cố bên ngoài 26
II.4.6 Các công tác thiết lập giá trị vận hành 27
II.4.7 Khối điều khiển 27
II.4.8 Khối cấp nguồn 28
II.5. Xây dựng phần mềm điều khiển 28
II.5.1 Lựa chọn ngôn ngữ 28
II.5.2 Sơ đồ khối tính toán chính 29
II.6 Chế tạo hoàn chỉnh bộ điều tốc 37
II.7 Xây dựng qui trình vận hành, sửa chữa, bảo d-ỡng 38
II.8 Đề xuất nâng cao chất l-ợng thiết bị 38
II.9 Bản vẽ nguyên lý 39
Phần III Nghiên cứu bộ điều tốc điều khiển phụ tải 40
III.1 Tổng quan 40
III.1.1 Thông tin từ n-ớc ngoài 40
III.1.2 Lựa chọn ph-ơng án thiết kế 42
III.2 Thiết kế phần cứng 50
III.2.1 CPU 50
III.2.2 Khối đo l-ờng tần số 51
III.2.3 Công tác thiết lập giá trị vận hành 51
III.2.4 Khối điều khiển tải 53
III.2.5 Đièu khiển kiểu Rơle 53
III.2.6 Khối cấp nguồn 53
III.3 Xây dựng phần mềm điều khiển 54
III.3.1 Lựa chọn ngôn ngữ 54
III.3.2 Sơ đồ khối tính toán chính 54
III.4 Chế tạo hoàn chỉnh bộ điều khiển 59
III.5 Đề xuất nâng cao chất l-ợng thiết bị 60
III.6 Bản vẽ nguyên lý 61
Phụ lục I Phần mềm điều khiển l-u tốc điều chỉnh 
l-u l-ợng 
63a
Phụ lục II Phầm mềm điều khiển điều tốc điều 
chỉnh phu tải 
102
                
              
                                            
                                
            
 
            
                 120 trang
120 trang | 
Chia sẻ: banmai | Lượt xem: 2317 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang tài liệu Nghiên cứu, thiết kế, chế tạo điều tốc cho các trạm thủy điện, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
mmand 
X05af: ret 
;============================================================= 
;X05B0:Nap gia tri 1Ah vao cac o nho (23h),(22h),(21h),(20h) 
; Khi hien thi, ROM 31Ah=00 -> Tat het cac LED 7 thanh 
;============================================================= 
KhongHienSo: 
 mov r0,#24h 
 mov r2,#4 
X05b4: dec r0 
 mov @r0,#1ah 
 djnz r2,X05b4 
 ret 
;============================================================== 
X05e6: ;Tien bo xung - Phuc vu X028b 
 mov r2,#80h 
 jb Acc.4, X05f1 
 mov r2,#60h 
 jb Acc.5, X05f1 
 mov r2,#98h 
X05f1: ret ; 05f1 - 83 . 
;=============================================================== 
; Giam dan o nho chi ra trong R0, neu = 0 thi gan gia tri 1 
;=============================================================== 
X0617: mov a,r6 
 jb Acc.6, X062e ; d=0 - Trong luoi 
 jb Acc.5, X062e ; Doc lap & x=0 Mode 1,2 
 mov a,r6 ; Doc lap & mode 3 
 swap a ; A=0D0N.0dxn 
 anl a,#3 ; A=xn=11,10,01 
 add a,#0f8h 
 mov r3,a ; R3=FBh,FAh,F9h 
 mov r2,#6 
X0626: call X073a 
 jb Acc.7, X062e 
 djnz r2,X0626 
 ret 
X062e: clr a 
 ret 
X0661: mov a,r6 
 jb Acc.6, X066e ; Neu chay doc lap 
 mov r0,#7eh 
 mov a,@r0 
 jz X066e 
 mov r1,#W_level 
 mov @r1,#2 
X066e: mov r0,#67h 
 ret 
Nap1: 
 mov @r0,#3 ; 3 -> (71h) 
 mov r0,#28h ; 
 mov @r0,#4 ; 4 -> (28h) 
 inc r0 ; 
 mov @r0,#5 ; 5 -> (29h) 
 ret ; 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 80
; 
X0689: mov r0,#Flags 
 mov a,@r0 
 mov r0,#29h 
 jb Acc.0, X0691 
 dec r0 
X0691: inc @r0 
 setb f0 
 ret 
X0696: mov r0,#28h 
 mov a,@r0 
 add a,#0fdh 
 jc X06a3 
 inc r0 
 mov a,@r0 
 add a,#0fdh 
 jnc X06b3 
X06a3: mov a,r6 
 jb Acc.6, X06b3 
 mov r0,#6ah 
 mov @r0,#0ah 
 dec r0 
 jb Acc.5, X06b3 
 mov @r0,#6 
 dec r0 
 mov @r0,#0ch 
X06b3: ret ;(Quay tro lai X016f) 
X06b4: 
 mov r2,#20h 
 mov r3,#0e1h 
 jb Acc.5, X06c2 
 mov r2,#0 
 jb Acc.4, X06c2 
 mov r2,#0eah 
 dec r3 
X06c2: ret 
;============================================================== 
R3R2_Add_7978: ; Kiem tra o nho (79h.78h) so voi tri so R3.R2 
 mov r0,#78h 
 mov a,@r0 
 add a,r2 
 inc r0 
 mov a,@r0 
 addc a,r3 
 ret 
;=============================================================== 
; Doan chuong trinh dong Role qua cong P1 
;=============================================================== 
Dong_Role: 
 cjne R4,#1Dh,Next1 
 call Ngat_Role ; Ngat Toan bo role 
 ajmp EndNext 
Next1: 
 cjne R4,#69h,Next2 
 setb p2.4 ; Close ON 
 clr p2.5 
 setb p3.4 ; Over ON 
 clr p3.5 
 clr p2.6 ; Open OFF 
 setb p2.7 
 setb p3.0 ; Sync OFF 
 clr p3.1 
 ajmp EndNext 
Next2: 
 cjne R4,#59h,Next3 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 81
 setb p2.4 ; Close ON 
 clr p2.5 
 setb p3.5 ; Over OFF 
 clr p3.4 
 clr p2.6 ; Open OFF 
 setb p2.7 
 setb p3.0 ; Sync OFF 
 clr p3.1 
 ajmp EndNext 
Next3: 
 cjne R4,#95h,X06df 
 setb p2.6 ; Open ON 
 clr p2.7 
 clr p2.4 ; Close OFF 
 setb p2.5 
 setb p3.0 ; Sync OFF 
 clr p3.1 
 clr p3.4 ; Over Speed OFF 
 setb p3.5 
EndNext: 
 nop 
 nop 
 djnz r3,Dong_Role 
 djnz r2,Dong_Role ; R2=0A (X06e0) 
X06df: ret 
X06e0: mov r0,#1dh 
 mov @r0,#0feh 
 mov r0,#72h 
 mov @r0,#0dch 
 inc r0 
 mov @r0,#0dch 
 mov r0,#2ah 
 mov @r0,#8 
 mov r2,#0ah 
 mov r0,#29h 
 mov @r0,#5 
 ret 
X0700: mov r0,#38h 
 mov r1,#36h 
 call X074c 
 jb Acc.7, X0711 
 mov r1,#38h 
 mov r0,#36h 
 call X074c 
 jb Acc.7, X072e 
X0711: mov r0,#3ah 
 mov r1,#3ch 
 call SubR0_R1 
 call Cpl2Nor 
 mov a,r2 
 rr a 
 rr a 
 nop 
 anl a,#3fh 
 mov r2,a 
 jz X072e 
X0722: mov a,r7 ; R7 chua dia chi 69h hoac 6ah 
 mov r0,a 
 mov r3,#0fbh 
X0726: mov a,@r0 
 add a,r3 
 jnc X072e ; @R7 < 5 
 call DecToOne 
 djnz r2,X0726 
X072e: mov a,r7 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 82
 mov r0,a 
 call DecToOne ; Giam noi dung @R7 
 ret 
X0735: call X0041 
 mov r2,a 
 ret 
X073a: mov a,@r1 
 add a,@r0 
 mov r4,a 
 inc r0 
 inc r1 
 mov a,@r1 
 addc a,@r0 
 mov r5,a 
 inc r0 
 inc r1 
 mov a,r4 
 add a,r3 
 mov a,r5 
 addc a,#0ffh 
 ret 
X074c: mov r2,#4 
 mov r3,#0fbh 
X0750: call X073a 
 jb Acc.7, X0756 
 djnz r2,X0750 
X0756: ret 
X0757: mov r2,#0beh 
 mov r3,#0d8h 
 call R3R2_Add_3F3E ; Neu Ts may phat > 39,8 thi bit 7=1 
 ret 
X0764: mov r2,#6 
 mov r3,#0ffh 
X0768: call X073a 
 jb Acc.7, X078a 
 djnz r2,X0768 
 mov r0,#34h 
 mov r1,#3ch 
 call SubR0_R1 
 call Cpl2Nor 
X0776: mov r0,#7bh 
 mov a,@r0 
 anl a,#0f8h 
 jz X077f 
 call DecToOne 
X077f: mov r0,#7ch 
 mov a,@r0 
 anl a,#0f8h 
 jz X0788 
 call DecToOne 
X0788: djnz r2,X0776 
X078a: ret 
;============================================================== 
X078d: mov r0,#40h 
 mov a,@r0 
 add a,r2 
 inc r0 
 mov a,@r0 
 addc a,#0 
 ret 
X0797: mov r0,#40h 
 mov a,@r0 
 add a,r2 
 inc r0 
 mov a,@r0 
 addc a,#0ffh 
 ret 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 83
Ngat_Role: 
 clr p2.4 ; Close OFF 
 setb p2.5 
 clr p2.6 ; Open OFF 
 setb p2.7 
 setb p3.0 ; Sync OFF 
 clr p3.1 
 clr p3.4 ; Over Speed OFF 
 setb p3.5 
 nop 
 nop 
 ret ; Tong cong 16 chu ky may (8039) 
X07b0: mov r0,#1dh ; 2 ck 
 mov @r0,#70h ; 2 ck (1Dh)=70h 
 mov r2,#50h ; 2 ck 
X07b6: call Ngat_Role 
 nop 
 nop ; 16 + 4 =20 ck 
 djnz r3,X07b6 
 djnz r2,X07b6 
 ret 
;============================================================== 
; Doc ROM 
;=============================================================== 
ROM_MODE: 
 mov a,r6 ; R6=0dxn0D0N 
 swap a ; A =0D0N0dxn 
 anl a,#7 ; A =00000dxn 
 orl a,#38h ; A =00111dxn 
 mov dptr,#ROM_DB ; Doc ROM tu 39h,3Ah,3Bh,3Dh,3Eh,3Fh 
 movc a,@a+dptr ; FA(MODE3),FB(MODE2),FC(MODE1),FD(MODE3),B2(MODE2),10(MODE1) 
 mov r0,#7ah 
 mov @r0,#4 ; 4 -> (7ah) 
 inc r0 ; 
 mov @r0,a ; So doc tu rom -> (7Bh) 
 inc r0 
 mov @r0,a ; So doc tu rom -> (7Ch) 
 inc r0 
 mov @r0,a ; So doc tu rom -> (7Dh) 
 ret 
X07e2: mov a,r6 
 jb Acc.0, X07ee ;Neu HOA thi ket thuc 
 call ROM_MODE 
 mov r0,#7ch 
 mov @r0,#4 
 dec r0 
 mov @r0,#4 
X07ee: mov r0,#7ah 
 mov @r0,#4 
 ret 
X07f3: mov @r0,#2 ; r0 = 6ch or 6dh 
 ; truoc khi goi doan nay hai op nay deu giam toi 1 
 mov a,@r1 ; r1 tro toi dia chi 70h or 71h 
 anl a,#7 ; giu lai 3 bit cuoi 
 mov @r1,a 
 add a,#0fbh ; so sanh voi 5 (nho hon) 
 jc X07fe 
 inc @r1 
X07fe: ret 
;============================================================== 
XuLy: 
 call X0083 ; 14 83 
 call Dem_Chu_Ky ; 14 60 
 call X0c00 ; 94 00 
 call Tinh_Tan_So ; 54 83 
 call X0b00 ; 74 00 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 84
 call ChuanBiHienThi ; 34 00 
 call X0a00 ; 54 00 
 call Tinh_PD ; 54 a0 
 call X0972 ; 34 72 
 nop 
 nop 
 ret 
;==================================================================== 
X0083: mov r1,#Count ; 2Fh 
 mov a,@r1 ; (Count) -> ACC 
 nop 
 anl a,#0fh ; Xet 4 bit cuoi 
 jnz X0092 ; Neu 4 bit cuoi khac 0 
 mov r0,#50h ; Neu 4 bit cuoi bang 0 - Chia het cho 16 
 call DecToOne ; Giam o nho 50h sau 16 lan dem tan so 
 inc r0 
 call DecToOne ; Giam o nho 51h sau 16 lan dem tan so 
X0092: ;call SW12ToR6 ; Dua gia tri bien SW12 -> ACC -> R6 
 mov r0,#SW12 
 mov a,@r0 
 mov r6,a ;ret 
 mov r3,a ; R3 = SW12 
 mov r0,#Flags 
 mov a,@r0 
 mov r7,a ; ret 
 nop 
 nop 
 anl a,#64h ; Xet bit 6,5,2 
 jnz X00d9 ; 0 -> Ket thuc 
 clr TR0 
 call Doc_Cong_Tac 
 mov r0,#Flags 
 mov a,@r0 
 jb Acc.7, X00af ; Neu bit 7 = 1, 
 jb Acc.3, X00af ; Neu bit 3 = 0 (bang 1 sau khi da dao) 
 mov a,r3 ; Neu bit 3 = 1 (bang 0 sau khi da dao), A=R3=SW12 
 xrl a,r6 ; R6=0dxn.0D0N XOR SW12 (=0dxn.0D0N) 
 jb Acc.0, X00af ; =1-> N=0 (Cong tac co su thay doi o vi tri HOA) 
 call X07b0 ; Neu khong doi-> Ngat ROLE trong R3*R2 lan =SW12*50h (0,075 ms) 
X00af: mov a,r2 ; Trong Doc_Cong_Tac r2=0000ldcn 
 mov r0,#27h 
X07d2: jb Acc.1, X07dc ; Neu cong tac thay doi gia tri call DecToOne ; Neu 
co tin hieu CloseCommand thi giam o nho (27h) 
 jnz X07de 
 mov a,#2 
 orl a,r7 ; R7=Flags 
 mov r7,a ; set bit 1 
X07dc: mov a,#2 
X07de: anl a,#7 ; lay 3 bit thap 
 mov @r0,a 
 nop 
 mov a,R7 
 jb Acc.7, X00c2 
 mov a,r6 ; A=0dxn.0D0N 
 anl a,#70h ; A=0dxn.0000 (Che do dieu tan - Normal) 
 jb Acc.6, X00c0 ; d=1 -> Doc lap 
 mov a,#50h ; Neu trong luoi ->A=0101.0000 ->Dieu tan, mode3, doclap 
X00c0: nop 
 mov r6,a ; Nap A tro lai R6, =0dxn.0000 hoac 0101.0000 
X00c2: mov r0,#7eh 
 mov a,@r0 
 jnz X00cd ; (7Eh) FFh 
 mov a,r6 ; Neu (7Eh)=FFh 
 anl a,#45h ; A=0d00.0D0N 
 jz X00d1 ; = 0 -> Normal + Luoi 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 85
X00cd: mov r0,#2dh ; Nguoc lai (2Dh)=1 
 mov @r0,#1 
X00d1: mov r0,#SW12 
 mov a,r6 
 mov @r0,a ; R6 -> (SW12) 
 mov r0,#Flags 
 mov a,r7 
 mov @r0,a ; R7 -> Flags 
X00d9: 
 ret ; End X0083 
;======================================================================== 
Dem_Chu_Ky: 
 mov r1,#48h 
 mov r2,#8 ; So lan lap cho XoaSoHienThi 
 clr a ; A=00h 
XoaSoHienThi: 
 mov @r1,a ; 00 -> (48h) 
 inc r1 
 djnz r2,XoaSoHienThi ; Dien 00 vao (49h,4Ah,4Bh,4Ch,4Dh,4Eh,4Fh) 
 mov r0,#Count ; (2Fh) 
 mov a,@r0 ; A=(Count) 
 inc @r0 ; (Count)+1 
 anl a,#3 ; Lay 2 bit cuoi cua Count 
 jnz Tieptuc2 ; Count khong chia het cho 4 khong KTLP 
 call KiemTraLechPha ; 4 lan Dem_Chu_Ky, 1 lan KTLP 
Tieptuc2: 
 clr f1 ; F1=0, Chua dem Tan so 
X0ee5: ; 
 mov r0,#Flags 
 mov a,@r0 
 jb Acc.7,TanSoMay ; Neu bit 7=1 chi kiem tra tan so may phat 
 ; Neu bit 7 cua (Flags)=0 
 mov a,r6 ; Neu cong tac HOA khong o vi tri HOA 
 nop 
 jb Acc.0,TanSoMay ; chi kiem tra tan so may phat 
TanSoLuoi: 
 setb p3.3 ; Cau hinh cong Input 
 mov TL1,#0 
 mov TH1,#0 
 jnb p3.3,$ ; Neu luoi=0 thi cho khi luoi=1 
 jb p3.3,$ ; Neu luoi=1 thi cho khi luoi=0 
 call X0d00 ; Tre R2*0.250 ms = (3Fh)*0,250 ms 
 mov @r0,#17h ; 17h ~ 23 ms, TS luoi qua thap -> Reset 
 jnb p3.3,$ ; Neu luoi=0 thi cho khi luoi=1 
 jb p3.3,$ ; Neu luoi=1 thi cho khi luoi=0 
 setb TR1 ; Khoi dong Timer1 de dem tan so 
 setb TR0 
 jnb p3.3,$ ; Neu luoi=0 thi cho khi luoi=1 
 jb p3.3,$ ; Neu luoi=1 thi cho khi luoi=0 
 clr TR1 ; Dung timer dem tan so 
 clr a 
Wait4ChuKy: 
 mov @r0,#17h ; 2Eh ~ 46 ms, TS luoi qua thap -> Reset 
 jnb p3.3,$ ; Neu luoi=0 thi cho khi luoi=1 
 jb p3.3,$ ; Neu luoi=1 thi cho khi luoi=0 
 djnz R5,Wait4ChuKy ; R5 =4 trong X0D00 
 clr TR0 
 mov p0,#0ffh ; Tat den LED 
 call X0d1e ; So dem duoc la gia tri 2 byte: R3R2 
 mov r5,#6 ; 
 mov r0,#58h ; 
 mov r1,#5ah ; 
 mov r0,#5eh ; 
 call NapR3R2ToR0 ; Tai dia chi 5Fh.5Eh chua gia tri 2 byte cua tan so luoi dien 
 mov r0,#77h ; 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 86
 call DecToOne 
 mov r1,#LED1 
X08ec: mov @r1,#1ah ; 1Ah -> LED1, khong hien so -> Nhap nhay so cuoi 
 mov r0,#Flags 
 mov a,@r0 
 jb acc.3,X08f6 ; neu bit Flags.3=0 thi thoi (HOA) 
 call KhongHienSo ; Neu khong o che do HOA -> Tat het LED ( Nhap nhay?) 
X08f6: 
TanSoMay: 
 mov TL1,#0 
 mov TH1,#0 
 setb p3.2 
 jnb p3.2,$ ; Cho den khi T1=1 (May phat) 
 jb p3.2,$ ; Cho den khi T1=0 (May phat) 
 call X0d00 ; (Trong doan nay stop Timer) 
 mov @r0,#40h ; (Doan X0d3a cu)~ 14.5 Hz 
 jnb p3.2,$ ; Cho den khi T1=1 (May phat) 
 jb p3.2,$ ; Cho den khi T1=0 (May phat) 
 setb TR1 
 setb TR0 
 mov @r0,#40h ; 
 jnb p3.2,$ ; Cho den khi T1=1 (May phat) 
 jb p3.2,$ ; Cho den khi T1=0 (May phat) 
 clr TR1 ; Dung timer dem tan so 
 clr a 
Wait4ChuKy2: 
 mov @r0,#40h ; 45h ~ 14.5 Hz, TS luoi qua thap -> Reset 
 jnb p3.2,$ ; Neu luoi=0 thi cho khi luoi=1 
 jb p3.2,$ ; Neu luoi=1 thi cho khi luoi=0 
 djnz R5,Wait4ChuKy2 ; R5 =4 trong X0D00 
 clr TR0 
 clr a 
 mov p0,#0ffh ; Tat den LED 
 call X0d1e 
 mov r5,#0eh 
 mov r0,#30h 
 mov r1,#32h 
 mov r0,#3eh 
 call NapR3R2ToR0 
 cpl f1 ; F1=1 Dem xong tan so 
 ret ; END OF Dem_Chu_Ky 
;=================================================================== 
X0d00: mov a,3fh ; A=(3Fh) Byte cao cua so dem chu ky may phat 
 mov r2,a ; Dua noi dung (3Fh) vao R2 
X0d04: mov r1,#7Dh 
X0d06: djnz r1,X0d06 ; Tre 7Dh=125 x 2 chu ky=250chu ky= 0,250 ms 
 djnz r2,X0d04 ; Tre R2 x 0,250 ms (50 Hz - R2=1Fh=31) 
 mov r0,#Dsp_Count ; R0=(1Dh) 
 mov r1,#1ah ; R1=1Ah 
 mov r5,#4 ; R5=4 
 CLR TR0 ; Dung Timer 
 call Ngat_Role 
 clr a 
 mov @r0,a ; 00 -> (Dsp_Count R5-rb1) 
 ret 
;============================================================== 
X0d1e 
N1: mov @r0,#0 ; 0 -> (1Dh) 
 mov R3,TH1 
 mov R2,TL1 
 mov r3,a 
 SETB tr0 
 ret ; R3.R2 = 1F40h (8000) 
N2: mov R3, #0Bh 
 mov R2, #0DBh 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 87
 mov a, TL1 
 add a,R2 
 mov a, TH1 
 addc a, R3 
 jb acc.7,N1 
 mov TH1,#0F4h 
 mov TL1,#24h 
 ret 
;============================================================== 
; Kiem tra do lech pha 2 may la (0,5 x R4) ms 
;============================================================== 
So_Pha1: 
 mov r4,#1 ; Lan dau R4=1 
So_Pha: 
 mov r1,#Dsp_Count ; 
 mov @r1,#0d6h ; 1101.0110 -> (Dsp_Count) 
 setb p3.2 ; (1Dh)=D6=214 
 setb p3.3 
T0_Duong: 
 mov a,@r1 ; 
 jb acc.5,Ketthuc1 ; Neu (1D.5)=1, da qua 22 chu ky hien thi 
 jb p3.3,T0_Duong ; (1Dh) = 1011.1111 = BFh= 191 
T0_Am: 
 mov a,@r1 ; den khi T0=0, kiemtra tiep 
 jb acc.5,Ketthuc1 ; Neu (1D.5)=1 thi ket thuc, (Dsp_Count)=FAh 
 jnb p3.3,T0_Am ; (1D.5)=0 -> Neu T0=0 tiep tuc kiem tra (1D.5) 
 call Doi_nua_ms ; khi T0=1 doi sau 0,5*R4 ms 
 jnb p3.3,Ketthuc2 ; jnt1 Neu T1=0 thi ket thuc, A=4Eh 
 jb p3.3,$ ; Neu T1=1, (T0=1) cho doi 
 call Doi_nua_ms ; khi T0=0, doi sau 0,5*R4 ms 
 jb p3.2,Ketthuc2 ; jt1 Neu T1=1 thi ket thuc, A=4Eh 
 ; T1 khong cham pha so voi T0 qua 0,5*r4 ms 
 jnb p3.2,$ ; jnt1 Neu T1=0, cho den khi T1=1 
 call Doi_nua_ms ; Tre sau 0,5*R4 ms 
 jnb p3.3,Ketthuc2 ; jnt0 Neu T0=0 thi ket thuc, A=4Eh 
 jb p3.2,$ ; jt1 Neu T0=1 cho den khi T1=0 
 call Doi_nua_ms ; Doi 0,5*R4 ms 
 clr a ; 
 jnb p3.3,Ketthuc1 ; jnt0 Neu T0=0 thi ket thuc (Dsp_Count)=FAh 
 ; T0 khong cham pha so voi T1 qua 0,5*r4 ms: A=0 
Ketthuc2: 
 mov a,#4eh ; Neu T0=1 thi ket thuc A=4Eh va (Dsp_Count)=FAh 
 ; T0 cham pha so voi T1 qua 0,5*r4 ms: A=4Ef=0100 1110 
Ketthuc1: 
 mov @r1,#0fah ; Neu bit5 cua (Dsp_Count)=1 thi FAh=11111010 -> (Dsp_Count) 
 ret ; 
Doi_nua_ms: 
 mov a,r4 ; A=R4 1 ck 
 rl a ; Neu R4<8F: A=R4*2 1 ck 
 add a,r4 ; A=3*R4 1 ck 
 mov r3,a ; R3=3*R4 1 ck 
Lap3: mov r2,#52h ; R2=82 2 ck 
 djnz r2,$ ; X0eb2 82*2 ck = 164 ck 
 djnz r3,Lap3 ; 2 ck 
 ret ; 
;==================================================== 
; Kiem tra do lech pha 
;==================================================== 
KiemTraLechPha: 
 mov r0,#7eh ; R0=7Eh 
 clr c 
 mov a,@r0 ; (7Eh) -> A =3F=0011.1111 (Truoc khi goi KTLP) 
 rlc a ; A*2=7E, C = bit MSB cua (7Eh)=0 
 mov @r0,a ; A=7E -> (7Eh) 
 nop 
 call So_Pha1 ; Kiem tra do lech pha 2 may < 0,5*R4 ms 
 ; Neu lech pha lon hon 0,5*R4 ms A= 4E =0100 1110 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 88
 ; Neu lech pha nho hon 0,5*R4 ms A= 00 =0000 0000 
 jb acc.5,X0ef8 ; Neu ACC.5 = 1 (Truong hop f < 22 Hz) 
 jb acc.6,KThuc_So_Lech ; Neu lech lon (A=4E -> ACC.6=1) -> Ket thuc 
 inc @r0 ; Neu lech nho (A=0 -> ACC.6=0) 
 mov a,@r0 ; (7Eh) -> A 
 jnz Xoa_A ; Neu a0 (tuc la (7Eh) FF) thi xoa A=0 
X0ef8: mov r0,#Flags ; Neu ACC=0, tuc ban dau (7Eh)=FF 
 mov a,@r0 ; Dua (Flags) - >A 
 orl a,#8 ; Bat bit thu 3 trong 2 t/hop: ACC.5=1 
 mov @r0,a ; Tan so < 22 Hz (Chu ky = 44 ms) 
Xoa_A: 
 clr a 
KThuc_So_Lech: 
 ret 
;========================================================================== 
X0c00: mov a,r6 ; A=0dxn.0D0N -> N=1 Hoa dien 
 jb Acc.0,X0c0b ; Neu Hoa 
X0e17: mov r4,#28h 
 call Add_3F3E_E0C0 ; Cong gia tri 2 byte (3Fh.3Eh) voi E0C0h 
 jb Acc.7,X0e1f ; Neu (3F.3E) khi cong voi E0C0h bit 7 bang 1 
 mov r4,#3ch ; f<= 50 Hz R4=28h 
X0e1f: nop ; ret f> 50 R4= 3Ch 
X0cf3: mov r0,#3eh 
 mov r1,#3ch 
 call SubR0_R1 ; Gia tri hien tai - Gia tri truoc do 
 mov a,r2 
 add a,r4 
 mov a,r3 
 addc a,#0 ; (R3.R2) + R4 
 jb Acc.7,X0c0b ; bit 7 = 1 -> Delta F < +0,2 Hz 
 mov r0,#7ah 
 mov @r0,#4 
X0c0b: ;call Flags2ACC 
 mov r0,#Flags 
 mov a,@r0 
 jb Acc.7,X0c16 
 mov r6,#70h ; R6=0111.0000 Dieu tan-mod1-doclap (Flags.7=0) 
 mov r0,#68h 
 nop 
X0c16: nop 
X0630: mov a,r6 
 anl a,#61h ; A=0dx0.000N 
 xrl a,#20h ; A=0 khi d=0,x=1,N=0 (Luoi,khong HOA) 
 jnz X065f ; Neu khong phai (Luoi,mode1&2,khong HOA) thi ket thuc 
 mov r2,#65h 
 mov r3,#0e1h 
 mov a,r6 
 jb Acc.4,X0640 ; Mode1 R3R2=E165 - 1E9B: 51 Hz 
 mov r2,#0fch ; Neu mode 2 R3R2=E10F - 1EF1: 52 Hz 
X0640: call R3R2_Add_3F3E 
 jb Acc.7,X0656 
 mov r2,#50h ; Neu tan so nho hon 
 mov r3,#0e0h 
 mov a,r6 
 jb Acc.4,X064e ; thi neu mode 2 R3R2=E050 -1FB0:49 Hz 
 mov r2,#72h ; Mode 1 R3R2=DF72 - 208E:48 Hz 
 dec r3 
X064e: call R3R2_Add_3F3E 
 jb Acc.7,X065f 
 mov r0,#2ah ; Neu Tan so nho hon 
 mov @r0,#3 ; (2Ah)=3 
X0656: mov r6,#30h ; R6=0011.0000 (Luoi-Mode1-Normal) 
 mov r0,#69h 
 mov @r0,#1 ; (69h)=1 
 inc r0 
 mov @r0,#1 ; (6Ah)=1 
X065f: ;sel mb1 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 89
 ;ret 
 mov a,r6 
 jb Acc.0, X0c2c 
 jb Acc.6, X0c45 
 call Giam2Dh ; X0b85 
 xrl a,#8 
 jnz X0c35 
 mov r0,#68h 
 mov @r0,#1 
 mov r0,#7ah 
 mov @r0,#1 
X0c2c: mov r0,#68h 
 mov a,@r0 
 add a,#0fbh 
 jnc X0c35 
 mov @r0,#4 
X0c35: mov r0,#69h 
 mov a,#1 
 nop 
 mov @r0,a 
 inc r0 ; 6Ah 
 mov @r0,a 
 mov r0,#7bh ; 7Bh 
 mov @r0,a 
 inc r0 ; 7Ch 
 mov @r0,a 
X0e47: ;call X0e47 
 inc r0 ; 7Dh 
 mov @r0,a 
 mov r0,#2ah 
 mov a,@r0 
 dec a 
 jnz X0e53 
 mov r0,#2dh 
 mov @r0,#1 
X0e53: ret ; End X0C00 
;======================================================================= 
; Doc ROM khi o che do doc lap 
;======================================================================= 
X0c45: swap a ; A=R6 -> A=0D0N0dxn 
 anl a,#7 ; A=00000dxn 
 orl a,#38h ; A=00111dxn =3D - 3F 
 mov dptr,#ROM_DB ; Doc ROM tu 3Dh,3Eh,3Fh 
 movc a,@a+dptr 
 mov r2,a 
 mov r0,#7dh 
 mov r3,#3 
X0c50: mov a,r2 
 add a,@r0 
 jnc X0c57 
 mov @r0,#4 
X0c57: dec r0 
 djnz r3,X0c50 ; Thuc hien 3 lan 
 ret 
;================================================================== 
Tinh_Tan_So: 
 mov r0,#3eh 
 mov r1,#48h ; Doi so dem tu 3F3E thanh Gia tri tan so * 100 
 call Chuky2TanSo ; Nap vao 49h.48h 
 mov a,r6 
 jb Acc.0,X0a9f ; Neu khong hoa thi ket thuc 
 mov r0,#5eh ; Neu hoa, tinh hieu tan so 
 mov r1,#4ah 
 call Chuky2TanSo ; Doi so dem tu 5F5E thanh gia tri tan so * 100 
 mov r0,#48h 
 mov r1,#4ah 
 call SubR0_R1 ; Hieu 2 tan so 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 90
 call Cpl2Nor ; Doi sang dang binh thuong 
 mov r0,#42h 
 call NapR3R2ToR0 ; Nap gia tri hieu tan so vao 43h.42h (bit 16 chi dau) 
X0a9f: ret ; End TinhTanSo 
;========================================================================== 
Chuky2TanSo: 
 mov r2,#5ah 
 mov r3,#62h 
 mov r4,#2 ; Chu y : 2625A00h=40000000=1/0,000000025 
 mov r7,#18h 
X0bdd: ;call X0bdd 
 ;ret 
 mov r5,#0 
;======================================================== 
CplR0_To_R1: ;call CplR0_To_R1 
 mov a,@r0 
 cpl a 
 add a,#1 
 mov @r1,a 
 inc r0 
 inc r1 
 mov a,@r0 
 cpl a 
 addc a,#0 
 mov @r1,a 
 dec r0 
 dec r1 
 ;ret 
X0be1: clr c 
 mov a,r2 
 rlc a 
 mov r2,a 
 mov a,r3 
 rlc a 
 mov r3,a 
 mov a,r4 
 rlc a 
 mov r4,a 
 mov a,r5 
 rlc a 
 mov r5,a 
;======================================================== 
R5R4_Add_R1: ; call R5R4_Add_R1 
 mov a,@r1 
 add a,r4 
 mov r4,a 
 inc r1 
 mov a,@r1 
 addc a,r5 
 mov r5,a 
 ;ret 
 dec r1 
 inc r2 
 jc X0bf8 
 dec r2 
;======================================================== 
R5R4_Add_R0: ; call R5R4_Add_R0 
 mov a,@r0 
 add a,r4 
 mov r4,a 
 inc r0 
 mov a,@r0 
 addc a,r5 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 91
 mov r5,a 
 ;ret 
 dec r0 
X0bf8: djnz r7,X0be1 
 mov a,r2 
 mov @r1,a 
 inc r1 
 mov a,r3 
 mov @r1,a 
 ret ; End TinhTanSo 
;======================================================================= 
X0b7f_j: 
 jmp X0b7f 
;======================================================================= 
X0b00: mov a,r6 
 anl a,#7Fh ; Xoa bit 7 
 mov r6,a 
 mov r1,#44h 
 mov @r1,#3eh 
 inc r1 
 mov @r1,#1fh ; (45h.44h)=1F3Eh (50,01 Hz) 
 mov r0,#Flags 
 mov a,@r0 
 jb Acc.1,X0b65 
 jb Acc.7,X0b7f_j ; Ket thuc 
 mov @r1,#1dh 
 dec r1 
 mov @r1,#7ah ; (45h.44h)=1D7Ah ( 53 Hz) 
 mov r0,#5eh 
 call SubR0_R1 ; R3.R2=(5Fh.5Eh)-(45h.44h) 
 jb Acc.7,X0b37 
 mov r1,#45h 
 mov @r1,#23h 
 dec r1 
 mov @r1,#93h ; R5.R4=2393h (43,9 Hz) 
 mov r0,#5eh 
 call SubR0_R1 ; R3.R2=(5Fh.5Eh)-(45h.44h) 
 jb Acc.7,X0b37 
 mov r0,#5eh 
 call NapR3R2FromR0 ; R3.R2=(5Fh.5Eh) 
 mov r0,#44h 
 call NapR3R2ToR0 ; (45h.44h)=(5Fh.5Eh) 
 mov a,r6 
 orl a,#80h ; Bat bit 7 
 mov r6,a 
X0b37: mov a,r6 
 mov r0,#SW12 ; Nap R6 -> SW12 
 mov @r0,a 
 jb Acc.0,X0b7f 
 mov r2,#40h 
 mov r3,#1fh 
 jb Acc.6,X0b55 
 mov r0,#2dh 
 mov a,@r0 
 dec a 
 jnz X0b4d 
 mov a,r6 
 jb Acc.2,X0b55 
X0b4d: call Doc7Eh ; A=NOT(7Eh) 
 jnz X0b55 
 mov r2,#69h 
 mov r3,#1ch 
X0b55: mov r0,#44h 
 call NapR3R2ToR0 ;(45h.44h)=1C69h (55Hz) hoac 1F40 (50Hz) 
 mov a,r6 
 jb Acc.6,X0b7f ; 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 92
 jb Acc.2,X0b7f 
 mov r0,#W_level 
 mov a,@r0 
 jb Acc.0,X0b7f 
X0b65: mov r0,#44h 
 mov r2,#60h 
 mov r3,#0ffh 
 call Add_R2_R3 
;============================================================== 
CplR3R2: ;call CplR3R2 ; Lay so bu 2 cua (R3.R2) 
 mov a,r2 
 cpl a 
 add a,#1 
 mov r2,a 
 mov a,r3 
 cpl a 
 addc a,#0 
 mov r3,a 
 ;ret 
 call R3R2_Add_3F3E 
 jb Acc.7, X0b7f 
 mov r2,#0c0h 
 mov r3,#1 
 mov r0,#3eh 
 call Add_R2_R3 
 mov r0,#44h 
 call NapR3R2ToR0 
X0b7f: ret ; End X0B00 
;============================================================== 
ChuanBiHienThi: 
X0F22: ;call X0F22 , vi dang mb1) ; Tien bo xung 
 mov a,r6 ; A=0dxn0D0N 
 jb Acc.5,X0f30 
 mov r0,#26h 
 call DecToOne ; X0e10 
 jnz X0f30 
 mov r0,#7bh 
 mov @r0,#1 
X0f30: mov r0,#Flags 
 mov a,@r0 
 jb Acc.7,X0f3d 
 mov a,r6 
 jb Acc.6,X0f3d 
 mov r0,#2ah 
 mov @r0,#0ah 
X0f3d: ;ret 
 mov r0,#42h ; Chua chenh lech tan so luoi va may phat 
 mov a,@r0 
 mov r2,a ; R2=(42h) 
 inc r0 ; R0 =43h 
 mov a,@r0 
 anl a,#7Fh 
 mov r3,a ; Xoa bit dau 
 jnz X0916 ; Neu 0 
 mov a,r2 ; Neu = 0 Kiem tra R2 co lon hon 2 khong 
 add a,#0fdh 
 jc X0916 
 mov r2,#0 ; Neu khong lon hon 4 -> Delta F < 0,02 
 mov @r0,#0 ; ->gan gia tri Delta F =0,00 
X0916: mov a,r6 
 jb Acc.0,DoiHe ; N=1 HOA -> Hien thi chenh tan so (chi co 3 chu so) 
 mov r0,#48h ; Neu khong phai HOA -> Hien thi tan so may phat 
 call NapR3R2FromR0 ; R3.R2=(49h.48h) gia tri cua tan so may phat 
 mov a,r6 ; a=0dxn.0D0N 
 jb Acc.6,LamTron ; Chay doc lap d=1 -> Lam tron, hien thi 3 so 
 jb Acc.2,DoiHe ; Neu chay trong luoi & Dieu toc-> Hien thi 4 chu so 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 93
LamTron: 
 mov a,r2 ; Neu trong luoi & W_L -> Lam tron so 
 add a,#5 ; + 5 vao so tan so may phat ( De lam tron) 
 mov r2,a 
 mov a,r3 
 addc a,#0 
 mov r3,a 
DoiHe: 
 mov r0,#SoDonvi ;(SoDonvi=(4Dh)+10h (so co dau thap phan 310h-319h) 
 mov @r0,#10h 
 dec r0 ; R0=SoChuc (4Ch) 
Chia1000: 
 mov a,r2 ; Cong R3.R2 + FC18h -> R3.R2 
 add a,#18h 
 mov r2,a 
 mov a,r3 
 addc a,#0fch ; FFFF-FC18=3E7h=999 
 mov r3,a 
 jnc Hoiphucsodu1 ; Neu R3.R2 < 1000 thi khi cong FC18 khong co Carry 
 inc @r0 ; Neu R3.R2 >= 1000, tang (So Chuc) 
 jmp Chia1000 
Hoiphucsodu1: 
 inc r0 ; R0=SoDonvi(4Dh), Neu R3.R2 < 1000 
 mov a,r2 ; Cong R3.R2 +1000 
 nop 
 add a,#0e8h 
 mov r2,a 
 mov a,r3 
 addc a,#3 
 mov r3,a ; R3.R2 +1000 (3E8h) -> R3.R2 
Chia100: 
 mov a,r2 ; Cong R3.R2 + FF9C -> R3.R2 
 add a,#9ch 
 mov r2,a 
 mov a,r3 
 addc a,#0ffh 
 mov r3,a 
 jnc Hoiphucsodu2 ; Neu R3.R2 < 100 thi khi cong voi FF9C khong co Carry 
 inc @r0 ; Neu R3.R2 >=100, tang (So Don vi) 
 jmp Chia100 
Hoiphucsodu2: 
 inc r0 ; R0=4Eh=So phan Chuc, Neu R3.R2 < 100 
 mov a,r2 
 add a,#64h ; Cong Byte thap R2 + 100 
Chia10: 
 add a,#0f6h 
 jnc Hoiphucsodu3 ; Neu R2 < 10 thi khi cong voi F6 khong co Carry 
 inc @r0 ; Neu R3.R2 >=10, tang (SophanChuc) 
 jmp Chia10 
Hoiphucsodu3: 
 inc r0 ; R0=4Fh=So phan tram, ; Neu R2 < 10 
 add a,#0ah 
 mov @r0,a ; (50h) 
 ;ret ; Quay ve DoiHe 
 mov a,r6 ; a=0dxn.0D0N 
 jb Acc.0,HienSoHoa ; Neu che do HOA N=1 
 call Hien3Chuso 
 jmp NapLED 
HienSoHoa: 
 mov r0,#SoChuc ; Luc nay la Chuc cua Delta F 
 mov a,@r0 
 jnz XetDau ; Neu tri so hang chuc 0 -> DeltaF > 10,00 Hz 
 mov @r0,#1ah ; Neu Chuc = 0 -> 1Ah -> (SoChuc) -> tat LED4 (so chuc) 
XetDau: mov r1,#43h ; Byte cao cua Delta F 
 mov a,@r1 
 jb Acc.7,NapLED ; Neu Delta F la so duong thi nap LED ngay 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 94
 mov a,@r0 ; Neu la so am, xet tiep Delta F Chuc xrl a,#1ah ; 
(neu Chuc = 0 -> Chuc=1Ah(tat LED) -> (Chuc XOR jz DauTru ; Chuc = 0: Khong dich phai, hien 
dau (-)o LED4 
 call DichPhaiSoHienThi ; Neu Chuc 0 Dich chuyen du lieu 
DauTru: mov r0,#SoChuc ; SoChuc->SoDonvi->SophanChuc->SophanTram 
 mov @r0,#42h ; ROM(442h)=20h -> Hien dau tru (-) o vi tri LED4 (Chuc) 
;=================================================================== 
NapLED: mov r0,#SoChuc 
 mov r1,#LED4 
 mov r2,#4 
 clr TR0 
X0953: mov a,@r0 ; Nap cac gia tri (SoChuc),(SoDonvi), 
 mov @r1,a ; (SophanChuc),(SophanTram) vao LEDs 
 inc r0 
 inc r1 
 djnz r2,X0953 
 mov r0,#Count 
 mov a,@r0 
 jb Acc.0,X0970 
 mov r1,#Flags 
 mov a,@r1 
 jb Acc.7,X0970 
 jb Acc.1,X096a ; Neu bit Flags.7=1, xet bit 1=0 (binh thuong) 
 mov r0,#LED4 ; Bit 1=1 -> CloseCommand hien nua tren so 8 (blink) 
 mov @r0,#1bh ; ROM(31Bh)=72h=0111.0010=fgba -> Nua tren so 8 
X096a: mov r0,#LED2 ; luc nay LED2 hien thi hang Donvi 
 mov a,@r0 
 anl a,#0fh ; Lay 4 bit duoi -> Xoa dau (.) thap phan 
 mov @r0,a 
X0970: setb TR0 ; Khoi dong Timer de hien thi 
 ret ; End of ChuanBiHienThi 
;============================================================= 
DichPhaiSoHienThi: 
 mov r0,#SophanChuc 
 mov r1,#SophanTram 
 mov r2,#3 
X0d76: mov a,@r0 
 mov @r1,a 
 dec r0 
 dec r1 
 djnz r2,X0d76 
 ret 
;============================================================ 
Hien3Chuso: ;call Hien3Chuso neu khong phai che do HOA 
 mov r1,#SophanTram 
 jb Acc.2,HienWL 
 mov a,r6 
 jb Acc.6,X0f0c 
 call DichPhaiSoHienThi ; Dich chuyen du lieu hien thi 3 chu so 
X0f0a: mov @r1,#1ah ; R1=So chuc khong hien 
X0f0c: ret 
;=========================================================== 
HienWL: mov r0,#Count 
 mov a,@r0 
 jb Acc.2,X0f0a 
 call Doc7Eh ; A=NOT(7Eh) 
 jz X0f1b 
 mov a,r6 
 jb Acc.6,X0f0a 
X0f1b: mov r0,#W_level ; R0 = ul, Thap ul=11 -> 43h 
 mov a,@r0 ; Trung binh ul=10 -> 42h 
 orl a,#40h ; Cao ul=00 -> 40h 
 mov @r1,a ; Chuan bi LED1 the hien Water Level 
 ret ; Quay ve NapLED 
;========================================================================== 
X0a00: mov a,r6 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 95
 anl a,#5 
 jz X0a12 ; Neu Dieu tan 
 mov r0,#6ch 
 mov @r0,#4 
 inc r0 
 mov @r0,#4 
 inc r0 
 mov @r0,#1 
 inc r0 
 mov @r0,#1 
X0a12: mov r0,#6fh 
 call DecToOne 
 jz X0a24 
 call Add_3F3E_E0C0 ; Cong gia tri 2 byte (3Fh.3Eh) voi E0C0h 
 jb Acc.7, X0a24 ; Neu Tanso > 50 Hz 
 mov r0,#6fh 
 mov @r0,#1 
 mov r0,#71h 
 call DecToOne 
X0a24: mov r0,#6eh 
 call DecToOne 
 jz X0a37 
 call Add_3F3E_E0C0 ; Cong gia tri 2 byte (3Fh.3Eh) voi E0C0h 
 jb Acc.7,X0a37 ; Neu Tanso < 50 Hz 
 mov r0,#6eh 
 mov @r0,#1 
 mov r0,#70h 
 call DecToOne 
X0a37: mov r2,#0a2h 
 mov r3,#0e0h 
 call R3R2_Add_3F3E ; So sanh voi 49,8 Hz 
 jb Acc.7,X0a47 ; Neu Tanso > 49,8 Hz 
 mov r2,#6fh 
 mov r3,#0e0h 
 call R3R2_Add_3F3E ; So sanh voi 49,4 Hz 
 jb Acc.7,X0a4b ; Neu Tanso > 49,4 Hz 
X0a47: mov r0,#6ch 
 mov @r0,#3 
X0a4b: mov r2,#0fh 
 mov r3,#0e1h 
 call R3R2_Add_3F3E ; So sanh voi 50,5 Hz 
 jb Acc.7,X0a5b ; Neu Tanso > 50,5 Hz 
 mov r2,#0deh 
 mov r3,#0e0h 
 call R3R2_Add_3F3E 
 jb Acc.7,X0a5f ; Neu Tanso > 50,2 Hz 
X0a5b: mov r0,#6dh 
 mov @r0,#3 
X0a5f: mov r2,#44h 
 mov r3,#0e3h 
 call R3R2_Add_3F3E 
 jb Acc.7,X0a6c ; Neu Tanso < 54,4 Hz 
 mov a,#8 
 call Change_Flags ; Bat bit 3 cua Flags 
X0a6c: call Giam2Dh ; (X0b85) 
 jz X0a74 
 mov r0,#72h 
 mov @r0,#0ffh 
X0a74: nop ;jmp X0800 
X0800: ;call Flags2ACC 
 mov r0,#Flags 
 mov a,@r0 
 mov r1,#73h 
 jb Acc.1,X0809 
 mov @r1,#0ffh 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 96
X0809: mov a,@r0 ; R0=Flags 
 jb Acc.7,X081b 
 call Doc7Eh ; A=NOT(7Eh) 
 jnz X081b 
 mov a,r6 
 jb Acc.6,X081b ; (Doc lap) 
 jb Acc.2,X082b ; Khong W_Level 
 mov @r1,#0ffh 
 dec r1 
 mov @r1,#0ffh 
X081b: mov r0,#2dh 
 mov @r0,#1 
 mov r2,#90h 
 mov r3,#0e2h ; E290 - 1D70:53 Hz 
 call R3R2_Add_3F3E 
 jb Acc.7,X0829 ; Neu tan so > 53 Hz 
 jmp X0b9f ; Neu < 53 Hz 
X0829: jmp X0b92 
X082b: mov r2,#58h 
 mov r3,#0e1h ; E158 - 1EA8:51 Hz 
 call R3R2_Add_3F3E 
 jb Acc.7,X081b ; Neu tan so > 51 Hz 
 jmp X0b9f ; Neu > 51 Hz 
X0b92: 
 mov r0,#Flags 
 mov a,@r0 
 jb Acc.4,X0b9f 
 dec r0 ; Theo X081B R0=2Dh -> R0= 2Ch 
 mov a,@r0 
 jnz X0b9f 
 mov a,#80h 
 call Change_Flags ; Bat bit 7 cua Flags 
X0b9f: mov r4,#80h 
 call Doc7Eh ; A=NOT(7Eh) 
 jnz X0bb0 
 mov a,r6 
 jb Acc.6,X0bb0 ; Doc lap 
 jb Acc.0,X0bb0 ; hoa 
 mov r4,#1 
 jb Acc.2,X0bb7 ; Wlevel 
 mov r4,#0 
X0bb0: mov r0,#50h 
 mov @r0,#2 
 inc r0 
 mov @r0,#2 
X0bb7: ;call Flags2ACC 
 mov r0,#Flags 
 mov a,@r0 
 jb Acc.1,X0bcb 
 mov a,r4 
 jb Acc.0,X0bcb 
 jnz X0bc4 
 call Giam2Dh ; X0b85 
 jnz X0bcb 
X0bc4: mov r1,#72h 
 call Load_AC_to_R1 ; Nap ACh vao @R1, neu @R1=FF 
 inc r1 
 call Load_AC_to_R1 ; Nap ACh vao @R1, neu @R1=FF 
X0bcb: ret 
;========================================================================== 
Tinh_PD: 
 mov r0,#3eh 
 mov r1,#38h 
 mov a,r6 
 nop 
 jb Acc.0,X0aaa ; Neu hoa dien R1= 38h 
 mov r1,#30h ; Neu Khong phai che do hoa R1=30h 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 97
X0aaa: call SubR0_R1 ; R2=(3Eh)-@R1 va R3=(3Fh)-@(R1+1) 
 mov r0,#62h 
 call NapR3R2ToR0 ; 63h.62h=3Fh.3Eh-39h.38h (Hoa) 
 mov a,r6 ; 63h.62h=3Fh.3Eh-31h.30h (Khong hoa) 
 jb Acc.0,X0ac4 
 mov r0,#5eh 
 mov r1,#58h 
 call SubR0_R1 ; R3.R2=(5Fh.5Eh)-(59h.58h) 
 mov r0,#46h 
 call NapR3R2ToR0 ; (47h.46h)=(5Fh.5Eh)-(59h.58h) 
 mov r0,#62h 
 mov r1,#46h 
 call SubR0_R1 ; R3,R2=(63h.62h)-(47h.46h) 
X0ac4: mov r0,#40h 
 call NapR3R2ToR0 ; (41h.40h)=(63h.62h)-(47h.46h) 
 mov r0,#3eh 
 call NapR3R2FromR0 ; R3,R2=(3Fh.3Eh) 
 mov a,r6 
 mov r1,#6 
 jb Acc.0,X0add ; HOA R1=6 
 mov r1,#7 ; Khong HOA 
 jb Acc.5,X0add ; Mode 1,2 R1=7 
 nop 
 jb Acc.6,X0add ; Trong luoi 
 mov r1,#7 ; Doc lap R1=7 
 nop 
 nop 
X0add: mov r0,#62h 
 call Add_R2_R3 ; R3.R2=R3.R2+(R0+1).R0 
 djnz r1,X0add 
 mov r0,#64h 
 call NapR3R2ToR0 ; (65h.64h)= ? 
 call X0d7d 
 mov r0,#64h 
 mov r1,#44h 
 call SubR0_R1 ; R3R2=(65h.64h)-(45h.44h) 
 mov r0,#66h 
 mov r1,#78h 
 mov a,r2 
 mov @r0,a 
 add a,#40h 
 mov @r1,a 
 inc r0 
 inc r1 
 mov a,r3 
 mov @r0,a 
 addc a,#1fh 
 mov @r1,a 
 ret ; End of Tinh_PD 
;================================================================ 
X0d7d: mov a,r6 
 jb Acc.0,X0d90 ; Neu HOA (N=1) thi Ret 
 call Doc7Eh ; A=NOT(7Eh) 
 mov r0,#2ch 
 jnz X0d8e ; Neu A=NOT(7Eh) 0 -> (2Ch)=0 
 call DecToOne ; Neu a=0 tuc la (7Eh)=FF thi A=(2Ch)-1 
 jnz X0d90 ; Neu (2ch) 0 thi thoi 
 mov a,#10h ; Neu A=0 (Luc nay (2Ch)=1) -> A=10h 
 jmp Change_Flags ; Bat bit 4 cua Flags 
X0d8e: mov @r0,#0 
X0d90: ret 
;===================================================================== 
X0972: 
 mov r0,#Flags 
 mov a,@r0 
 anl a,#9bh ; And 1001.1011 ? 
 mov @r0,a ; Xoa bit 2,5,6 cua Flags (lien quan X0092) 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 98
 jb Acc.7,X097b 
 jb Acc.1,X09b2 
X097b: mov a,r6 
 jb Acc.0,X0981 ; N=0 Khong phai HOA 
 jmp CheDoHOA ; Che do HOA 
; 
X0981: mov a,r6 
 jb Acc.6,X09a8 ; Chay doc lap 
 mov r2,#0fch 
 mov r3,#0e1h 
X0eb7: jb Acc.2,X0ec6 ; call X0eb7 
 jb Acc.4,X0ec6 
 mov r2,#0a0h 
 mov r3,#0e3h 
 jb Acc.5,X0ec6 
 mov r2,#65h 
 mov r3,#0e1h 
X0ec6: ;ret 
 call R3R2_Add_3F3E 
 jb Acc.7,X09a8 ; Neu Tan so may phat > cac gia tri tren thi X09a8 
 mov a,r6 ; Neu nho hon 
 jb Acc.2,X09b6 ; Neu che do W_Lwvel - X09b6 
 call Giam2Dh ; Neu khong phai W_Level 
 jnz X09b6 
 mov a,r6 ; Neu (2Dh)=0 
 jb Acc.5,X09a4 ; Neu mode 3 
 jb Acc.4,X09a4 ; Neu mode2 
 mov r2,#1dh ; Neu mode 1 R3R2=E01D - 49 Hz 
 mov r3,#0e0h 
 call R3R2_Add_3F3E 
 jb Acc.7,X09b6 ; Neu tan so < 49 Hz 
X09a4: ;call X0cee ; Neu lon hon 4-> (7Ah) 
X0cee: mov r0,#7ah 
 mov @r0,#4 
 ;ret 
 jmp X09b6 
X09a8: mov r2,#60h 
 mov r3,#0e0h 
 mov r4,#3ch 
 call X0f3e 
 jb Acc.7,X09b9 
X09b2: mov a,#40h 
 call Change_Flags ; Bat bit 6 cua Flags 
X09b6: ;call Flags2ACC 
 mov r0,#Flags 
 mov a,@r0 
 ret 
;==================================================== 
X09b9: mov r2,#70h 
 mov r3,#0e2h 
 mov r4,#28h 
 call X0f3e 
 jb Acc.7,X09e1 
 mov r3,#0e5h 
 mov r2,#0fh 
 call R3R2_Add_6564 
 jb Acc.7,X09ce 
X09ce: 
 mov r3,#0e4h 
X0857: mov r2,#19h ; Tien bo sung - Phuc vu X09CE 
 mov a,r6 
 jb Acc.5,X085e ; Mode 1,2 R2=19h 
 mov r2,#0ffh ; mode 3 R2=FF 
 call R3R2_Add_3F3E 
 jb Acc.7,X09b6 
 ;call X0d91 
X0d91: mov r0,#34h 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 99
 mov r1,#32h 
 mov r5,#6 
X0b8a: mov r4,#5 
 mov a,r6 
 jb Acc.5, X0b91 
 mov r4,#0ah 
X0b91: nop ;ret 
X09db: call X0da5 
 jb Acc.7,X09e3 
 djnz r5,X09db 
X09e1: jmp X09b2 
X09e3: mov r0,#34h 
 mov r1,#6 
X09e7: mov r2,#0f5h 
 mov r3,#0e5h 
 call Add_R2_R3 
 inc r0 
 jb Acc.7,X09b6 
 djnz r1,X09e7 
 mov r0,#3eh 
 mov r1,#3ch 
 mov r4,#0f0h 
 call X0d9a 
 jb Acc.7,X09b2 
X0c95: call Doc7Eh ; A=NOT(7Eh) 
 jnz X0cd5 
 mov a,r6 
 jb Acc.6,X0cd5 
 jb Acc.2,X0ca4 
 mov r0,#W_level 
 mov a,@r0 
 jb Acc.0,X0cd5 
X0ca4: mov a,r6 
 swap a 
 anl a,#3 
 mov r2,a 
 rl a 
 add a,r2 
 mov r0,#OpenRate ; Open Rate 
 add a,@r0 
 add a,#0f7h 
 jc X0cb3 
 clr a 
X0cb3: mov r0,#WL_Rate ; W_LRate 
 rl a 
 nop 
 mov @r0,a 
 mov r7,a 
 jz X0cd5 
 ;call X0d91 
 mov r0,#34h 
 mov r1,#32h 
 mov r5,#6 
 ;ret 
X0cbd: mov a,#0d8h 
 call X0d98 
 jb Acc.7,X0cd9 
 djnz r5,X0cbd 
 mov r2,#8 
 mov r3,#0deh ; R3.R2=2270 
X0cc9: call R3R2_Add_6564 
 jb Acc.7,X0cd5 
 mov r0,#Flags 
 mov a,@r0 
 jb Acc.7,X0cd5 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 100
 orl a,#20h 
 mov @r0,a 
X0cd5: mov r0,#Flags 
 mov a,@r0 
 ret 
;============================================================ 
X0cd9: 
 mov r0,#34h 
 mov r1,#32h 
 mov r5,#6 
 ;ret 
X0cdb: mov a,#0e6h 
 call X0d98 
 jb Acc.7,X0cd5 
 djnz r5,X0cdb 
 mov r2,#7dh 
 mov r3,#0dch 
X0d98: add a,r7 
 mov r4,a 
X0d9a: call SubR0_R1 
 inc r0 
 inc r1 
 mov a,r2 ; Cong 2 byte R3.R2 + R4 
 add a,r4 
 mov a,r3 
 addc a,#0ffh 
 ret 
;============================================================== 
X0da5: call SubR0_R1 
 inc r0 
 inc r1 
 mov a,r2 ; Cong 2 byte R3.R2 + R4 
 add a,r4 ; Sau do nghich dao gia tri 
 mov a,r3 
 addc a,#0 
 ret 
;============================================================== 
SubR0_R1: 
 mov a,@r1 
 cpl a 
 add a,#1 
 mov r2,a 
 inc r1 
 mov a,@r1 
 cpl a 
 addc a,#0 
 mov r3,a 
 call Add_R2_R3 
 ret 
;============================================================== 
Add_R2_R3: 
 mov a,@r0 
 add a,r2 
 mov r2,a 
 inc r0 
 mov a,@r0 
 addc a,r3 
 mov r3,a 
 ret 
;============================================================== 
Cpl2Nor: 
 mov a,r3 ; Dua R3 vao A, 
 cpl a ; Dao gia tri 
 jb Acc.7,X0de4 ; Neu bit 7=1 ( bit 7 cua R3=0) -> Gia tri 2 byte trong R2 (L) 
 ; va R3 (H) la so duong (+) thi ket thuc 
 mov a,r2 ; Nguoc lai R2.R3 la so Am (-) 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 101
 cpl a 
 add a,#1 
 mov r2,a 
 mov a,r3 
 cpl a 
 addc a,#80h ; Tien hanh doi sang so duong, bat bit dau =1 (<0) 
 mov r3,a 
X0de4: ret 
;======================================================== 
NapR3R2ToR0: mov a,r2 ; R2=5Eh 
 mov @r0,a 
 inc r0 
 mov a,r3 
 mov @r0,a 
 ret 
;======================================================== 
NapR3R2FromR0: 
 mov a,@r0 
 mov r2,a 
 inc r0 
 mov a,@r0 
 mov r3,a 
 ret 
;============================================================== 
R3R2_Add_6564: 
 mov r0,#64h 
 mov a,@r0 
 add a,r2 
 inc r0 
 mov a,@r0 
 addc a,r3 
 ret 
;============================================================== 
R3R2_Add_3F3E: 
 mov r0,#3eh 
 mov a,@r0 
 add a,r2 
 inc r0 
 mov a,@r0 
 addc a,r3 
 ret 
;======================================================== 
DecToOne: 
 mov a,@r0 ; X0610 
 dec a 
 mov @r0,a 
 jnz DecEnd ; 
 inc @r0 ; 
DecEnd: ret 
;================================================================== 
Load_AC_to_R1: 
 mov a,@r1 
 cpl a 
 jnz X0e45 
 mov @r1,#0ach 
X0e45: ret 
;============================================================== 
Add_3F3E_E0C0: 
 mov r0,#3eh 
 mov a,@r0 
 add a,#0c0h 
 inc r0 
 mov a,@r0 
 addc a,#0e0h 
 ret 
;===================================================================== 
Doc7Eh: mov r0,#7eh 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 102
 mov a,@r0 
 cpl a 
 ret 
;================================================================= 
Giam2Dh: 
 mov r0,#2dh 
 mov a,@r0 
 dec a 
 ret 
;============================================================== 
Change_Flags: 
 mov r0,#Flags 
 orl a,@r0 
 mov @r0,a 
 ret 
;===================================================================== 
X0f3e: 
 call R3R2_Add_3F3E 
 jb Acc.7, X0f4f 
 mov r0,#3ah 
 mov r1,#38h 
 mov r5,#3 
X0f49: call X0da5 
 jb Acc.7, X0f4f 
djnz r5,X0f49 i 
X0f4f: ret 
;===================================================================== 
; HOA DIEN 
;===================================================================== 
CheDoHOA: ;call Flags2ACC 
 mov r0,#Flags 
 mov a,@r0 
 nop 
 jb Acc.4,X0f5d 
 mov r0,#LED4 ; Neu bit 4 =1 
 mov @r0,#1fh ; ROM(31Fh)=53h=0101.0011=fbap - Dau cham hoi ? 
 clr a 
 ret 
;=========================================================== 
X0f5d: mov r0,#2ah 
 mov @r0,#8 
 mov r0,#40h 
 call NapR3R2FromR0 ; R2=(40h), R3=(41h) 
 call Cpl2Nor ; Doi dang so bu sang Binh thuong 
 mov a,#0ceh 
 add a,r2 
 mov a,r3 
 addc a,#0ffh 
 jb Acc.6,X0f91 
 mov r0,#42h 
 call NapR3R2FromR0 ; R2=(42h), R3=(43h) 
 mov a,r2 
 add a,#0e8h 
 mov a,r3 
 addc a,#0ffh 
 jb Acc.6,X0f91 
 mov r0,#7ah 
 mov @r0,#4 
 mov r0,#77h 
 mov a,@r0 
 dec a 
 jnz X0f91 
 mov r4,#2 
 call So_Pha ; 0f8a ( R4=2 - Tre pha 1 ms) 
 jb Acc.5, X0f91 
 jnz X0f94 ; Ngoai bit 5, neu A 0 -> lech pha lon 
 call Doc7Eh ; Doc 7Eh, dao gia tri ; A=NOT(7Eh) 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 103
X0f91: clr a 
 ret 
X0f93: inc r4 
X0f94: mov a,r4 
 add a,#0fbh ; (R4) + FBh=251 
 jc X0f91 
 call So_Pha ; Neu Carry=0 -> R4 <= 4, goi So_Pha 
 jb Acc.5,X0f91 ; Sau khi so pha, neu bit 5 =1 (???) -> Xoa ACC 
 jnz X0f93 ; Ngoai bit 5, neu A 0 -> lech pha lon, tang R4 cho toi 4 
 mov a,r4 ; Neu A=0, tuc la lech pha nho 
 add a,#0fch ; A= (R4) + (FCh=252) 
 jb Acc.7,X0fa6 ; Neu bit (A.7)=1, tuc la r4 < 4 
 mov r4,#3 ; Neu R4 >= 4, thi R4=3 
X0fa6: dec r4 
 mov a,r4 
 dec a 
 nop 
 jnz X0f94 
 mov r4,#7 
 jmp HOA_DIEN 
Chuan_Bi_Hoa: 
 mov r0,#2dh ; R0=2Dh 
 mov @r0,#0bh ; 0Bh=0000.1011 -> (2Dh) 
 mov a,r6 ; R6=0dxn.0D0N 
 jb Acc.6,Doc_Lap ; d=1 -> day do = 5v-> Che do chay doc lap 
 mov r0,#2ah ; Che do chay trong luoi 
 mov @r0,#6 ; 6 -> (2Ah) =0000.0110 
Doc_Lap: 
 mov r0,#77h 
 mov @r0,#10h ; 10h -> (77h) 
 mov r0,#7eh 
 mov @r0,#0ffh ; FFh -> (7Eh) 
;========================================================== 
; Doc cong tac xac dinh co o vi tri HOA khong 
;========================================================== 
 mov p1,#0ffh 
 nop 
 mov a,p1 
 jb Acc.0,Khong_Hoa ; Day Nau = 5 V -> Khong phai che do hoa dien 
 jb Acc.1,Khong_Hoa ; Sau khi dao, neu P4.1=1 -> Closedown 
 call So_Pha ; Con lai, chinh la HOA DIEN 
 jz HOA_DIEN ; Neu do lech pha nho 
Khong_Hoa: 
 djnz r5,Chuan_Bi_Hoa ; Lap lai cho toi khi xay ra ngat Timer, chuong trinh se 
 mov r3,#9ch ; duoc re sang nhanh khac. 
Ngat_Role2: 
 call Ngat_Role 
 djnz r2,Ngat_Role2 
 djnz r3,Ngat_Role2 
 clr a ; ACC=0 
 ret 
;================================================================== 
HOA_DIEN: 
 mov r1,#1dh 
 mov @r1,#0 ; 0 -> (1Dh), chuan bi cho lan goi So pha sau 
 mov LED4,#1Ch ; H 
 mov LED3,#0 ; O 
 mov LED2,#0Ah ; A 
 mov LED1,#1Dh ; ! 
 mov r3,#8 
DongMachHoa: 
 setb p3.1 ; Sync ON 
 clr p3.0 
 clr p2.4 ; Close OFF 
 setb p2.5 
 clr p2.6 ; Open OFF 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 104
 setb p2.7 
 clr p3.4 ; Over Speed OFF 
 setb p3.5 
 djnz r2,DongMachHoa 
 djnz r3,DongMachHoa ; Thuc hien Hoa R3 = 8 lan 
 djnz r4,HOA_DIEN ; (Truoc doan nay R4=7) 
 mov r4,#2 ; 
 mov r5,#2 ; 
 jmp Chuan_Bi_Hoa ; Kiem tra lai trang thai cong tac MODE 
 end 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 105
PHỤ LỤC II 
PHẦN MỀM ĐIỀU KHIỂN ĐIỀU TỐC ĐIỀU CHỈNH PHỤ TẢI 
;*********************************************** 
;* Chuong trinh dieu chinh tan so luoi doc lap * 
;* dung tai gia Dummy load * 
;* Dung thuat toan dieu khien theo PI * 
;**************** Byte Address ***************** 
 frq_counter equ 50h 
frq_counter1 equ 51h 
 frq_counter2 equ 52h 
 Err_frq equ 53h 
 Pre_alpha1 equ 54h 
 Pre_alpha2 equ 55h 
 delay_T equ 56h 
 Temp1 equ 57h 
 Temp2 equ 58h 
 Temp3 equ 59h 
 Kp equ 60h ; cac thong so bo dieu khien 
 Ki equ 61h 
 T equ 62h 
 Dload1_alp1 equ 66h ; Gia tri alpha tai 1 
 Dload1_alp2 equ 67h 
 Dload2_alp1 equ 68h ; Gia tri alpha tai 2 
 Dload2_alp2 equ 69h 
 Ketqua_PI equ 6Ah 
 Ketqua_P equ 6Bh 
 Ketqua_I equ 6Ch 
 TongSaiLech equ 6Dh 
 pulse_width1 equ 70h 
 pulse_width2 equ 71h 
;**************** Bit Address ****************** 
 F_level bit 20h 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 106
 F_edge bit 21h 
 F_open1 bit 22h 
 F_open2 bit 23h 
 F_level_ bit 24h 
 F_edge_ bit 25h 
 F_frq_c bit 26h 
 F_result bit 27h 
 Err_sign bit 28h 
 F_cut1 bit 29h 
 F_cut2 bit 2ah 
 SignTong bit 2bh 
 Sign_PI bit 2ch 
;************************************************ 
 ORG 0000h 
 ljmp MainProg 
 ORG 000bh 
 ljmp Isr_Timer0 
 ORG 001bh 
 ljmp Isr_Timer1 
;************************************************ 
;Isr_Timer0: dem tan so ( Tan so ngat 0.125ms) 
;************************************************ 
Isr_Timer0: 
 push psw 
push acc 
 push dph 
 push dpl 
 jb P3.2,continue00 
 jb F_level,continue01 
 setb F_level 
 setb F_edge 
 mov frq_counter1,frq_counter 
 mov frq_counter,#00h 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 107
 jnb F_frq_c,continue01 ; 
 mov a,frq_counter1 
 jz continue01 
 clr F_frq_c 
 setb F_result 
 mov frq_counter2,frq_counter1 
 ajmp continue01 
continue00: 
 clr F_level 
continue01: 
 jnb F_edge,continue02 
 clr c 
 inc frq_counter 
 jnc continue02 
 mov frq_counter,#255 
continue02: 
 jb F_cut1,continue04 
 mov a,frq_counter 
 clr c 
 subb a,Dload1_alp1 
 jnz continue03 
 setb F_open1 
 ajmp continue04 
continue03: 
 mov a,frq_counter 
 clr c 
 subb a,Dload1_alp2 
 jnz continue04 
 setb F_open1 
 ajmp continue05 
continue04: 
 jb F_cut2,continue06 
 mov a,frq_counter 
 clr c 
 subb a,Dload2_alp1 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 108
 jnz continue05 
 setb F_open2 
 ajmp continue06 
continue05: 
 jb F_cut2,continue06 
 mov a,frq_counter 
 clr c 
 subb a,Dload2_alp2 
 jnz continue06 
 setb F_open2 
continue06: 
 jnb F_open1,continue07 
 inc pulse_width1 
 clr c 
 mov P2.5,c 
 nop 
mov a,pulse_width1 
 cjne a,#2,continue07 
 nop 
 setb c 
 mov P2.5,c 
 clr F_open1 
 mov pulse_width1,#00h 
continue07: 
 jnb F_open2,Esc_Timer0 
 inc pulse_width2 
 clr c 
 mov P2.6,c 
 nop 
 mov a,pulse_width2 
 cjne a,#2,Esc_Timer0 
 nop 
 setb c 
 mov P2.6,c 
 clr F_open2 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 109
 mov pulse_width2,#00h 
Esc_Timer0: 
 pop dpl 
 pop dph 
 pop acc 
 pop psw 
 reti 
;================================================ 
;Isr_Timer1: chu ky do tan so ( thoi gian 20ms) 
;================================================ 
Isr_Timer1: 
 mov TH1,#0B1h 
 mov TL1,#0DFh 
 push psw 
 push acc 
 push dph 
 push dpl 
 jnb F_result,delay_circ 
 clr F_result 
 mov a,frq_counter2 
 clr c 
 subb a,#160 
 jc con00 
 mov Err_frq,a 
 setb Err_sign 
 ajmp con01 
con00: 
 mov a,#160 
 clr c 
 subb a,frq_counter2 
 mov Err_frq,a 
 clr Err_sign 
con01: 
 lcall PI_controller 
delay_circ: 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 110
 inc delay_T 
 mov a,delay_T 
 clr c 
 subb a,T 
 jnz Esc_Timer1 
 setb F_frq_c 
 mov delay_T,#00 
Esc_Timer1: 
 pop dpl 
 pop dph 
 pop acc 
 pop psw 
reti 
;************************************************************************* 
;PI_controller: 
;************************************************************************* 
PI_controller: 
 mov a, #16 
 clr c 
 subb a,Err_frq 
jnc Err_adj 
 mov Err_frq,#16 
 ajmp PI_tinhtoan 
Err_adj: 
 mov a,Err_frq 
 clr c 
 subb a,#01 
 jc Err_nho 
 jz Err_nho 
 ajmp PI_tinhtoan 
Err_nho: 
 ajmp Ket_thuc 
PI_tinhtoan: 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 111
 mov r5,Kp 
 mov a,#0 
LapP: 
 add a,Err_frq 
 djnz r5,LapP 
 mov Ketqua_P,a 
TinhTongSaiLech: 
 mov a,TongSaiLech 
 jb SignTong,TongDuong 
 jb Err_sign,Tru1 
 ajmp Cong1 
TongDuong: 
 jnb Err_sign,Tru1 
Cong1: 
 clr c 
 add a,Err_frq 
 mov TongSaiLech,a 
 clr c 
 subb a,#24 
 jc Tran1 
 ajmp ThanhPhan_I 
Tran1: 
 mov TongSaiLech,#24 
 ajmp ThanhPhan_I 
Tru1: 
 clr c 
 subb a,Err_frq 
 jc DoiDauTong 
 mov TongSaiLech,a 
 ajmp ThanhPhan_I 
DoiDauTong: 
 mov a,Err_frq 
 subb a,TongSaiLech 
 mov TongSaiLech,a 
 cpl SignTong 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 112
ThanhPhan_I: 
 mov r5,Ki 
 mov a,#0 
LapI: 
 add a,TongSaiLech 
 djnz r5,LapI 
 mov Ketqua_I,a 
TongPI: 
 mov a,Ketqua_P 
 jb Err_sign,TruP 
CongP: 
 clr Sign_PI 
 jb SignTong,TruI 
 ajmp CongI 
TruP: 
 setb Sign_PI 
 jnb SignTong,TruI 
CongI: 
 clr c 
 add a,Ketqua_I 
 mov Ketqua_PI,a 
 ajmp DieuKhien 
TruI: 
 clr c 
 subb a,Ketqua_I 
 jc Doidau 
 mov Ketqua_PI,a 
 ajmp DieuKhien 
Doidau: 
 mov a,Ketqua_I 
 subb a,Ketqua_P 
 mov Ketqua_PI,a 
 cpl Sign_PI 
DieuKhien: 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 113
 mov a,frq_counter2 
 mov Temp2,a 
 mov Temp1,a 
 mov a,Temp2 
 rrc a 
 mov Temp3,a 
 jb Err_sign,GiamTai2 
TangTai1: 
 mov a,Pre_Alpha1 
 clr c 
 subb a,Ketqua_PI 
 jc MoHoanToan1 
 mov Pre_Alpha1,a 
 clr c 
 subb a,#03 
 jc MoHoanToan1 
 ajmp TangTai2 
MoHoanToan1: 
 mov Pre_Alpha1,#3 
TangTai2: 
 clr F_Cut2 
 mov a,Temp3 
 clr c 
 subb a,Pre_Alpha1 
 jc HetTangTai 
 mov a,Pre_Alpha2 
 clr c 
 subb a,Ketqua_PI 
 jc MoHoanToan2 
 mov Pre_Alpha2,a 
 clr c 
 subb a,#03 
 jc MoHoanToan2 
 ajmp Alpha_charge 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 114
HetTangTai: 
 mov Pre_Alpha2,Temp1 
 setb F_cut2 
 ajmp Alpha_charge 
MoHoanToan2: 
 mov Pre_Alpha2,#3 
 ajmp Alpha_charge 
GiamTai2: 
 clr F_cut2 
 mov a,Pre_Alpha2 
 clr c 
 add a,KetQua_PI 
 jc DongHoanToan2 
 mov Pre_Alpha2,a 
 clr c 
 subb a,Temp1 
 jnc DongHoanToan2 
 ajmp GiamTai1 
DongHoanToan2: 
 mov Pre_Alpha2,Temp1 
 setb F_cut2 
GiamTai1: 
 mov a,Pre_Alpha2 
 clr c 
 subb a,Temp3 
 jc Alpha_charge 
 mov a,Pre_Alpha1 
 clr c 
 add a,KetQua_PI 
 jc DongHoanToan1 
 mov Pre_Alpha1,a 
 clr c 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 115
 subb a,Temp1 
 jnc DongHoanToan1 
 clr F_cut1 
 ajmp Alpha_charge 
DongHoanToan1: 
 mov Pre_Alpha1,Temp1 
 setb F_cut1 
Alpha_charge: 
 jb F_cut1,cont01 
 mov a,Pre_Alpha1 
 clr c 
 add a,temp2 
 mov Dload1_alp2,a 
 mov Dload1_alp1,Pre_Alpha1 
cont01: 
 jb F_cut2,Ket_thuc 
 mov a,Pre_Alpha2 
 clr c 
 add a,temp2 
 mov Dload2_alp2,a 
 mov Dload2_alp1,Pre_Alpha2 
 ajmp Ket_thuc 
Ket_thuc: 
 ret 
;=============================================== 
;Doc_Sw: 
;=============================================== 
Doc_Sw: 
 clr c 
 mov P3.6,c 
 mov P3.7,c 
 nop 
 nop 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 116
 nop 
 nop 
 mov a,P1 
 cpl a 
 add a,#1 
 mov T,a 
 clr c 
 mov P3.6,c 
 setb c 
 mov P3.7,c 
 nop 
 nop 
 nop 
 nop 
 mov a,P1 
 cpl a 
 add a,#1 
 mov Kp,a 
 mov P0,a 
 setb c 
 mov P3.6,c 
 clr c 
 mov P3.7,c 
 nop 
 nop 
 nop 
 nop 
 mov a,P1 
 cpl a 
 mov Ki,a 
 ret 
;*********************************************** 
; Main program 
;*********************************************** 
MainProg: 
mov P2,#0 
 setb c 
 mov P2.5,c ; Tat tat ca tai (Load-off) 
B¸o c¸o khoa häc §Ò tµi KC07- 04 
 117
 mov P2.6,c 
 mov P1,#0FFh 
 mov frq_counter,#00h ; Khoi tao cac bien 
 clr F_level ; Khoi tao cac flag 
 clr F_edge 
 clr F_result 
 setb F_cut1 ; Cam tai 
 setb F_cut2 ; 
 setb F_frq_c ; Cho phep do tan so 
 mov Pre_alpha1,#77 
 mov Pre_alpha2,#77 
 mov Dload1_alp1,#75 
 mov Dload1_alp2,#155 
 mov Dload2_alp1,#75 
 mov Dload2_alp2,#155 
 lcall Doc_sw 
 mov IE,#8Ah ; Khoi tao ngat Timer 0, Timer 1 
 mov TMOD,#12h 
 mov TH0,#131 ; Dinh timer0 0.125ms 
 mov TL0,#131 
 mov TH1,#0B1h ; Dinh timer1 20ms 
 mov TL1,#0DFh 
 setb PT0 ; Uu tien ngat Timer0 
 clr PT1 
 setb TR0 
 setb TR1 
; Vong lap chuong trinh 
Mainloop: 
 nop 
 ljmp Mainloop 
 End 
            Các file đính kèm theo tài liệu này:
 58176.pdf 58176.pdf