📄 main.asm
字号:
;==========================================================================================; SH69P822;; (c) Copyright 2006-2007, Sino Wealth Microelectronics Corporation Limited; All Rights Reserved;; module name : Main.asm version : 1.0; function : ; by : CLR; in : 2007-02-13;;==========================================================================================;==========================================================================================; Entrance of Power On,Reset key,LVR reset and WDT reset ;==========================================================================================POWERON: nop nop nop nopSTRAT: ldi rzIE ,00h ldi rzWDT ,1000b ;watchdog time up = 4ms call InitSys ;init system IO call ClearLED call ClrRAM ;clear user reg ldi rzWDT ,1000b ;watchdog time up = 4ms call InitGlobal ;init user registers call InitSys ;init system IO again ldi 1aH ,ADC_330Tad + ADC_Tad_8Tosc ldi 1bH ,ADC_Module_On + ADC_Channel0 orim rzADC_GODONE ,1000b ;enable AD moudule ldi rzTM0 ,TIMER0_OSC_PRESCALER ldi rzTL0 ,TIMER0_System_Base&0fh ldi rzTH0 ,(TIMER0_System_Base>>4)&0fh orim zIronMode ,1000b // andim zIntFlag1 ,1101b ldi zCounter_Iron5000ms ,(TIMER_IRON_5000MS) & 0x0f ldi zCounter_Iron5000ms+1 ,(TIMER_IRON_5000MS>>4) & 0x0f ldi zCounter_Iron5000ms+2 ,(TIMER_IRON_5000MS>>8) & 0x0f andim rzIRQP ,0000b ;clear all irq flag andim rzIRQ ,0000b ldi rzIEP ,0000b ;disable port interrupt ldi zIEBackup ,INT_Timer0 ;enable Timer0 interrupt sta rzIE ,0 ;------------------------------------------------------------------------------------------Main: halt ldi rzWDT ,1000b ;reset watchdog timer. jmp TimerProcessorExit_TimerProcessor: jmp ADCProcessorExit_ADCProcessor: jmp ScanRTExit_ScanRT: lda zSystemHealthy ,0 ;until obtain stable temperatur ba0 $+2 jmp Main jmp ScanWheelExit_ScanWheel: jmp ZeroDetectExit_ZeroDetect: //-----------------------------------------------------------------------------------------ComeIntoPause: ;2007-04-03 lda zIntFlag2 ,0 ba3 $+2 jmp ComeIntoPasue_Over orim PIN_IRON ,IRON ldi zSparkBuf ,0x0f ldi zIronMode ,IRON_MODE6 ldi zIronCT+3 ,0x00 ;"OFF" ldi zIronCT+2 ,0x00 ldi zIronCT+1 ,0x0f ldi zIronCT+0 ,0x0fComeIntoPasue_Over: //----------------------------------------------------------------------------------------- jmp IronProcessorExit_IronProcessor: jmp LEDProcessor Exit_LEDProcessor: jmp Main ;==========================================================================================; Init User registers;==========================================================================================InitGlobal: ;init all system timer ldi zCounter_System5ms ,TIMER_SYSTEM_5MS ldi zCounter_System100ms_L ,TIMER_SYSTEM_100MS&0fh ldi zCounter_System100ms_H ,(TIMER_SYSTEM_100MS>>4)&0fh ldi zCounter_System500ms_L ,TIMER_SYSTEM_500MS&0fh ldi zCounter_System500ms_H ,(TIMER_SYSTEM_500MS>>4)&0fh ldi zCounter_System30min+0 ,TIMER_SYSTEM_30MIN&0fh ldi zCounter_System30min+1 ,(TIMER_SYSTEM_30MIN>>4)&0fh ldi zCounter_System30min+2 ,(TIMER_SYSTEM_30MIN>>8)&0fh ;init LED refresh time ldi zLEDRefreshTime ,LED_REFRESH_TIME ;init LED spark buffer ldi zSparkBuf ,0x0f ;init Mode ldi zIronMode ,IRON_MODE6 ;begin heet process ldi zIronState ,0001b ReadOption: ;option: C/F zOPTION EQU zWk0 zOPTION_BUF EQU zWk1 zREPEAT_COUNTER EQU zWk3 zRETRY_COUNTER EQU zWk3 ldi zOPTION ,0000b ldi zOPTION_BUF ,0000b ldi zRETRY_COUNTER ,0x05 ?begin: sbim zRETRY_COUNTER ,0x01 baz ?selectCelsius ;error: select Celsius ldi zREPEAT_COUNTER ,0x03 ;read 3 time to confirm lda zOPTION ,0 sta zOPTION_BUF ,0 ?loop: andim rzPBOUT ,1101b // C/F share with PB1 orim rzPB ,0010b nop nop nop nop nop nop nop nop nop nop nop nop lda rzPB ,0 sta zOPTION ,0 eor zOPTION_BUF ,0 bnz ?begin sbim zREPEAT_COUNTER ,0x01 bnz ?loop lda zOPTION ba1 ?selectCelsius // C/F share with PB1 ?selectFahrenheit: ldi zCFOption ,Fahrenheit ldi zIronSP2 ,(Fahrenheit_SP_Default>>8)&0x0f ldi zIronSP1 ,(Fahrenheit_SP_Default>>4)&0x0f ldi zIronSP ,(Fahrenheit_SP_Default)&0x0f ldi zCFMinValue ,Fahrenheit_SP_MinValue & 0x0f ldi zCFMinValue1 ,(Fahrenheit_SP_MinValue>>4) & 0x0f ldi zCFMinValue2 ,(Fahrenheit_SP_MinValue>>8) & 0x0f ldi zCFMaxValue ,Fahrenheit_SP_MaxValue & 0x0f ldi zCFMaxValue1 ,(Fahrenheit_SP_MaxValue>>4) & 0x0f ldi zCFMaxValue2 ,(Fahrenheit_SP_MaxValue>>8) & 0x0f ldi zCFIRON_N1 ,Fahrenheit_IRON_N1 & 0x0f ldi zCFIRON_N1+1 ,(Fahrenheit_IRON_N1>>4) & 0x0f ldi zCFIRON_N1+2 ,(Fahrenheit_IRON_N1>>8) & 0x0f ldi zCFIRON_N2 ,Fahrenheit_IRON_N2 & 0x0f ldi zCFIRON_N2+1 ,(Fahrenheit_IRON_N2>>4) & 0x0f ldi zCFIRON_N2+2 ,(Fahrenheit_IRON_N2>>8) & 0x0f ldi zCFIRON_N3 ,Fahrenheit_IRON_N3 & 0x0f ldi zCFIRON_N3+1 ,(Fahrenheit_IRON_N3>>4) & 0x0f ldi zCFIRON_N3+2 ,(Fahrenheit_IRON_N3>>8) & 0x0f ldi zCFIRON_N4 ,Fahrenheit_IRON_N4 & 0x0f ldi zCFIRON_N4+1 ,(Fahrenheit_IRON_N4>>4) & 0x0f ldi zCFIRON_N4+2 ,(Fahrenheit_IRON_N4>>8) & 0x0f ldi zCFIRON_N5 ,Fahrenheit_IRON_N5 & 0x0f ldi zCFIRON_N5+1 ,(Fahrenheit_IRON_N5>>4) & 0x0f ldi zCFIRON_N5+2 ,(Fahrenheit_IRON_N5>>8) & 0x0f jmp ?next ?selectCelsius: ldi zCFOption ,Celsius ldi zIronSP2 ,(Celsius_SP_Default>>8)&0x0f ldi zIronSP1 ,(Celsius_SP_Default>>4)&0x0f ldi zIronSP ,(Celsius_SP_Default)&0x0f ldi zCFMinValue ,Celsius_SP_MinValue & 0x0f ldi zCFMinValue1 ,(Celsius_SP_MinValue>>4) & 0x0f ldi zCFMinValue2 ,(Celsius_SP_MinValue>>8) & 0x0f ldi zCFMaxValue ,Celsius_SP_MaxValue & 0x0f ldi zCFMaxValue1 ,(Celsius_SP_MaxValue>>4) & 0x0f ldi zCFMaxValue2 ,(Celsius_SP_MaxValue>>8) & 0x0f ldi zCFIRON_N1 ,Celsius_IRON_N1 & 0x0f ldi zCFIRON_N1+1 ,(Celsius_IRON_N1>>4) & 0x0f ldi zCFIRON_N1+2 ,(Celsius_IRON_N1>>8) & 0x0f ldi zCFIRON_N2 ,Celsius_IRON_N2 & 0x0f ldi zCFIRON_N2+1 ,(Celsius_IRON_N2>>4) & 0x0f ldi zCFIRON_N2+2 ,(Celsius_IRON_N2>>8) & 0x0f ldi zCFIRON_N3 ,Celsius_IRON_N3 & 0x0f ldi zCFIRON_N3+1 ,(Celsius_IRON_N3>>4) & 0x0f ldi zCFIRON_N3+2 ,(Celsius_IRON_N3>>8) & 0x0f ldi zCFIRON_N4 ,Celsius_IRON_N4 & 0x0f ldi zCFIRON_N4+1 ,(Celsius_IRON_N4>>4) & 0x0f ldi zCFIRON_N4+2 ,(Celsius_IRON_N4>>8) & 0x0f ldi zCFIRON_N5 ,Celsius_IRON_N5 & 0x0f ldi zCFIRON_N5+1 ,(Celsius_IRON_N5>>4) & 0x0f ldi zCFIRON_N5+2 ,(Celsius_IRON_N5>>8) & 0x0f ?next: ldi rzPBOUT ,0011b ldi rzPB ,0000b rtni ;==========================================================================================; Clear & Refresh LED;========================================================================================== ClearLED: ldi z74LS164Buf3 ,0x0f ldi z74LS164Buf2 ,0x0f ldi z74LS164Buf1 ,0x0f ldi z74LS164Buf ,0x0f RefreshLED: ; PB1:Output ---- 74164 SCK ; PB0:Output ---- 74164 SDA ldi rzPBOUT ,0011b //2007/05/07 ldi rzPB ,0000b nop nop nop nop nop L1: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+3 ,0 ba3 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L2: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+3 ,0 ba2 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L3: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+3 ,0 ba1 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L4: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+3 ,0 ba0 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L5: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+2 ,0 ba3 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L6: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+2 ,0 ba2 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L7: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+2 ,0 ba1 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L8: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+2 ,0 ba0 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L9: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+1 ,0 ba3 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L10: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+1 ,0 ba2 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L11: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+1 ,0 ba1 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L12: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+1 ,0 ba0 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L13: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+0 ,0 ba3 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L14: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+0 ,0 ba2 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 L15: orim PIN_SDA164 ,SDA164 lda z74LS164Buf+0 ,0 ba1 $+2 andim PIN_SDA164 ,SDA164^0x0f andim PIN_SCK164 ,SCK164^0x0f orim PIN_SCK164 ,SCK164 ; PB1:Output ---- 74164 SCK ; PB0:Output ---- 74164 SDA ldi rzPBOUT ,0010b //2007/05/07 andim rzPB ,1110b rtni ;RefreshLED2:; ldi zWk4 ,15 ; ?loop:; lda z74LS164Buf ,0; addm z74LS164Buf ,0; lda z74LS164Buf1 ,0; adcm z74LS164Buf1 ,0; lda z74LS164Buf2 ,0; adcm z74LS164Buf2 ,0; lda z74LS164Buf3 ,0; adcm z74LS164Buf3 ,0; bc ?txdBit1; ?txdBit0:; andim PIN_SDA164 ,SDA164^0x0f; jmp $+2; ?txdBit1: ; orim PIN_SDA164 ,SDA164; andim PIN_SCK164 ,SCK164^0x0f; orim PIN_SCK164 ,SCK164 ; sbim zWk4 ,0x01; bnz ?loop; rtni ;--------------------------------------End-------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -