奥迪V6发动机机点火控制程序
(1) 点火器程序。运行于51单片机,T1作为点火用定时器,溢出时马上点火,21h:
T1 定时器预装载数的高8位,22h: 磁电机运行位置(状态),分别用 1,2,3,4
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示,
23h: 上上次状态
ORG 0000H
ajmp INIT
ORG 0003H
ajmp INT_0
ORG 000bH
ajmp OFW0
ORG 0013H
ajmp INT_1
ORG 001bH
ajmp OFW1
IGN_DATA_LOW: //预置点火提前角数据
DW 0ffffh,0ffe9h,0ffd2h,0ffbbh,0ffa4h,0ff8dh,0ff77h,0ff60h,0ff49h,0ff32h ;0---9 DW 0ff1bh,0ff05h,0feeeh,0fed7h,0fec0h,0fea9h,0fe93h,0fe7ch,0fe65h,0fe4eh ;10---19 DW 0fe37h,0fe21h,0fe0ah,0fdf3h,0fddch,0fdc5h,0fdafh,0fd98h,0fd81h,0fd6ah ;20---29 DW 0fd53h,0fd3dh,0fd26h,0fd0fh,0fcf8h,0fce1h,0fccbh,0fcb4h,0fc9dh,0fc86h ;30---39 DW 0fc6fh,0fc59h,0fc42h,0fc2bh,0fc14h,0fbfdh,0fbe7h,0fbd0h,0fbb9h,0fba2h ;40---49 DW 0fb8bh,0fb75h,0fb5eh,0fb47h,0fb30h,0fb19h,0fb03h,0faech,0fad5h,0fabeh ;50---59 DW 0faa7h,0fa91h,0fa7ah,0fa63h,0fa4ch,0fa35h,0fa1fh,0fa08h,0f9f1h,0f9dah ;60---69 DW 0f9c3h,0f9adh,0f996h,0f97fh,0f968h,0f951h,0f93bh,0f924h,0f90dh,0f8f6h ;70---79 DW 0f8dfh,0f8c9h,0f8b2h,0f89bh,0f884h,0f86dh,0f857h,0f840h,0f829h,0f812h ;80---89 DW 0f7fbh,0f7e5h,0f7ceh,0f7b7h,0f7a0h,0f789h,0f773h,0f75ch,0f745h,0f72eh ;90---99 DW 0f717h,0f701h,0f6eah,0f6d3h,0f6bch,0f6a5h,0f68fh,0f678h,0f661h,0f64ah ;100---109 DW 0f633h,0f61dh,0f606h,0f5efh,0f5d8h,0f5c1h,0f5abh,0f594h,0f57dh,0f566h ;110---119 DW 0f54fh,0f539h,0f522h,0f50bh,0f4f4h,0f4ddh,0f4c7h,0f4b0h ;120---127 IGN_DATA_HIGH:
DW 0f499h,0f482h ;128---129
DW 0f46bh,0f455h,0f43eh,0f427h,0f410h,0f3f9h,0f3e3h,0f3cch,0f3b5h,0f39eh ;130---139 DW 0f387h,0f371h,0f35ah,0f343h,0f32ch,0f315h,0f2ffh,0f2e8h,0f2d1h,0f2bah ;140---149 DW 0f2a3h,0f28dh,0f276h,0f25fh,0f248h,0f231h,0f21bh,0f204h,0f1edh,0f1d6h ;150---159 DW 0f1bfh,0f1a9h,0f192h,0f17bh,0f164h,0f14dh,0f137h,0f120h,0f109h,0f0f2h ;160---169 DW 0f0dbh,0f0c5h,0f0aeh,0f097h,0f080h,0f069h,0f053h,0f03ch,0f025h,0f00eh ;170---179
DW 0eff7h,0efe1h,0efcah,0efb3h,0ef9ch,0ef85h,0ef6fh,0ef58h,0ef41h,0ef2ah ;180---189 DW 0ef13h,0eefdh,0eee6h,0eecfh,0eeb8h,0eea1h,0ee8bh,0ee74h,0ee5dh,0ee46h ;190---199 DW 0ee2fh,0ee19h,0ee02h,0edebh,0edd4h,0edbdh,0eda7h,0ed90h,0ed79h,0ed62h ;200---209 DW 0ed4bh,0ed35h,0ed1eh,0ed07h,0ecf0h,0ecd9h,0ecc3h,0ecach,0ec95h,0ec7eh ;210---219 DW 0ec67h,0ec51h,0ec3ah,0ec23h,0ec0ch,0ebf5h,0ebdfh,0ebc8h,0ebb1h,0eb9ah ;220---229 DW 0eb83h,0eb6dh,0eb56h,0eb3fh,0eb28h,0eb11h,0eafbh,0eae4h,0eacdh,0eab6h ;230---239 DW 0ea9fh,0ea89h,0ea72h,0ea5bh,0ea44h,0ea2dh,0ea17h,0ea00h,0e9e9h,0e9d2h ;240---249 DW 0e9bbh,0e9a5h,0e98eh,0e977h,0e960h
主程序 (2)
INIT: nop // 完成初始化功能
nop
nop
nop
clr p1.5
MOV TMOD,#19H ; //置定时器方式,t0 模式1,t1 模式1
MOV TCON,#05H ; //后沿触发
setb C
orl C,PSW.3
orl C,PSW.4
mov IE,#8fh ; //总中断允许
clr tr0
clr TR1
MOV TL0,#0H
MOV TH0,#0H
mov tl1,#0h
mov th1,#0h
; setb tr1
setb tr0
; mov scon,#01000000b
MAIN:
clr p1.7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
setb p1.7 nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
setb p1.6 clr p1.6 sjmp MAIN ; //主程序循环挂起
(3)外部中断1响应程序,即方波信号的上升沿触发。
INT_1:
mov a,22h cjne a,#1h,INT_1_EXIT ; //前一状态是1否
mov a,23h cjne a,#4h,INT_1_EXIT ; //上上次状态是4否
mov a,21h cjne a,#0ffh,INT_1_EXIT ; //是ffh则在状态2的上
升沿点一次火
call ign_long INT_1_EXIT:
nop
nop
nop
reti
(4)外部中断0响应程序方波高电平脉宽测定完成,先保存原r0r1到r4r5,再保
存记数到r0r1,先检查是不是状态1,若不是则前一状态步进1作为当前状态,
INT_0: clr tr0 mov A,r0
mov r4,A
mov A,r1
mov r5,A
mov r0,tl0
mov r1,th0
mov tl0,#0h
mov th0,#0h
setb tr0 ;T0继续记时
clr p1.5
mov psw,#0h ;比较r0r1 和r4r5大小 mov A,r4
subb A,r0
mov A,r5
subb A,r1
jnc is_234 ;r4r5>r0r1
mov a,r0
mov r2,a
mov a,r1
mov r3,a ;r0r1=>r2r3
if_1:
mov psw,#0h ;1,r2r3减r4r5看够不够减 mov a,r2
subb a,r4
mov r2,a mov a,r3 subb A,r5 mov r3,a jc is_234 mov psw,#0h ;2,r2r3减r4r5看够不够减
mov a,r2 subb a,r4 mov r2,a mov a,r3 subb A,r5 mov r3,a jc is_234 mov psw,#0h ;3,r2r3减r4r5看够不够减
mov a,r2 subb a,r4 mov r2,a mov a,r3 subb A,r5 mov r3,a jc is_234 mov psw,#0h ;4,r2r3减r4r5看够不够减
mov a,r2 subb a,r4 mov r2,a mov a,r3 subb A,r5 mov r3,a jnc is_pos_1 ;如差不多大不够减4次,则不是状态1
is_234: nop
nop
clr c
mov 23h,#0h
mov a,22h cjne a,#1h,if_pos_3 ;前一状态是1否
is_pos_2: ;是状态2
nop
mov 23h,#1h mov 22h,#2h nop
ajmp exit if_pos_3: cjne a,#2h,if_pos_4 ;前一状态是2否
is_pos_3: mov 23h,#2h mov 22h,#3h ;是状态3 nop
nop
ajmp exit if_pos_4: cjne a,#3h,err ;前一状态是3否
is_pos_4: clr tr1
mov 23h,#3h mov 22h,#4h ;是状态4 nop
nop
ajmp exit is_pos_1: mov a,22h mov 23h,a mov 22h,#1h ;是状态1 cjne a,#4h,err ;上次不是4,不点火,但记录本次状态为1作为开始状态
mov psw,#0h mov a,r1
subb a,#15h jc h_1200r ;转速低于1200提前角恒为0
mov 21h,#0ffh ajmp exit ;直接返回,不点火,由状态2点火
h_1200r:
mov a,r1
mov r3,a
mov a,r0
mov r2,a
mov psw,#0h mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a
mov psw,#0h mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a
mov psw,#0h mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a
mov psw,#0h mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a
mov psw,#0h subb a,#064h mov r7,a
mov a,r3
subb a,#0h
jc h_4140r
mov a,r7
subb a,#80h jc low_256
mov dptr,#IGN_DATA_HIGH
ajmp get_ign_data low_256:
mov psw,#0h mov a,r7
mov dptr,#IGN_DATA_LOW
get_ign_data: mov b,#2h
mul ab
mov r7,a
movc a,@a+dptr mov th1,a
mov a,r7
inc a
movc a,@a+dptr mov tl1,a
setb tr1
ajmp exit
h_4140r:
nop
nop
call ign_2_loop exit:
err: nop
nop
clr p1.5
reti
(5)点火子程序,低转速下延长打火时间
ign_2_loop: setb p1.5
mov a,#0ffh ign_loop:
dec a
nop
jnz ign_loop clr p1.5
nop
nop
ret //点火子程序
ign_long:
setb p1.5
mov a,#0ffh ign_long_loop: dec a
nop
nop
nop
nop
nop
nop
nop
nop
jnz ign_long_loop
clr p1.5
nop
nop
ret
(6) 定时器T0溢出中断响应程序正常情况T0不应溢出,否则说明磁电机转速太
慢了,造成计数溢出,这种情况下清空继续计数
OFW0: nop nop
clr tr0
mov tl0,#0h mov th0,#0h setb tr0
clr p1.5
nop
nop
nop
reti //定时器T1溢出中断响应程序;T1溢出,
开始点火
clr tr1 OFW1:
mov a,22h cjne a,#1h,ign_exit ;不是状态1不要点火,3-4之间还要记数测转速
; mov a,23h ; cjne a,#4h,ign_exit ;上上次不是状态4不要点火,
call ign_2_loop ign_exit: mov tl1,#0h mov th1,#0h clr p1.5
nop
nop
reti
nop
nop
clr p1.5
END