友情推荐网上购书渠道:
EDN网(ednchina)购书入口   >>>
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历

百宝专栏

  • 首页 相册 标签
  • 电脑应用(65)
  • 供需信息(22)
  • 写书近况(82)
  • 匠人文集(115)
  • 硬件技术(171)
  • 匠人公告(86)
  • 与非门专栏(545)
  • 匠人笔记(115)
  • 团队撰写(96)
  • 汽车电子(52)
  • 编程技巧(465)
  • 程序宝典(476)
  • 网络酷文(472)
  • 开发工具(19)
  • 资料宝藏(274)
  • 项目管理(11)
  • 藏经宝阁(42)
  • 趣味设计(5)
  • 社区热贴(2)
  • 比尔盖茨熊专栏(0) 
  • 百宝信息

    载入中...

    百宝流量

    (2006-07-01开始)



    匠人手记

    芯片专题

    器件专题

    软件专题

    硬件专题

    综合专题

    项目专题

    原创专题

    器件检测
    LCD LED
    按键 触摸键
    E2PROM
    电池 电机
    电阻 电容 电感

    指令系统
    软件算法
    编程规范
    滤波算法
    串行通讯

    PCB设计
    I2C PWM
    红外遥控
    充电技术
    中断 ADC 

    匠人手记
    匠人夜话
    网络心路
    一周热点串烧
    从零开始玩PIC
    DIY旋转时钟

    基于SN8P1706芯片的电磁炉(源程序)(sonix)
    程序匠人 发表于 2006-7-23 11:26:00  阅读全文 | 回复(4) | 引用通告 | 编辑

     Title induction cooker controller
    ;OSC:16.000MHz
     chip SN8P1706
    //{{SONIX_CODE_OPTION
     .Code_Option OSG  Enable
     .Code_Option High_Clk 12M_X'tal
     .Code_Option High_Clk/2 Disable
     .Code_Option Security Enable
     .Code_Option LVD  Enable
     .Code_Option Watch_Dog Enable
    //}}SONIX_CODE_OPTION
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\
     InitPort macro 
     mov a,#01110000b  ;p4.7,p4.3 as A/D input
     b0mov P4M,a
     
     mov a,#00111111b
     b0mov P5M,a 
     
     mov a,#0xff
     b0mov P2M,a
     mov a,#11000000b
     b0mov P1M,a
     @set_pur 0x23
     clr P1 
     clr P2
     clr P4
     clr P5 
     mov a,#0x44
     b0mov TC1M,a
     mov a,#225  ;225
     b0mov TC1R,a
     b0bset FTC1OUT  ;buzzer on
     b0bset FTC1ENB
     
     mov a,#11110101b  ;1:16 16uS
     b0mov TC0M,a
     mov a,#0xff
     b0mov TC0R,a
     mov a,#11110000b  ;1:2 1uS
     b0mov T0M,a
     mov a,#00010000b
     b0mov INTEN,a
     clr INTRQ
     endm
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    ;*****************************
    ;clear ram (00h-->7fh)
    ;*****************************
     ClearRam macro
     clr Y
     b0mov Z,#0x7f
    Clear_Ram01: 
     clr @YZ
     decms Z
     jmp Clear_Ram01
     endm
    ;\\\\\\\\\\\\\\\\\\\\\\
     BuzzerActive macro
     b0bts1 BuzzerEnable
     jmp BuzzerStop
            b0mov a,BuzNumber
            b0bts0 FZ 
            jmp BuzzerStop
            b0bts1 BuzzerShort
            jmp BuzNormal01
            mov a,#50
            jmp BuzNormal02
    BuzNormal01:
     mov a,#100
    BuzNormal02:         
            sub a,TimerBuz
            b0bts0 FC
            jmp BuzzerRet
                ;else   buzzer time over
    BuzzerTimeOver:
            clr TimerBuz
            b0bts1 BuzzerIsOn
            jmp BuzzerTimeOver01
            b0bclr BuzzerIsOn  ;buzzer on
            b0bset BUZZER
            jmp BuzzerTimeOver02
    BuzzerTimeOver01:
     b0bclr BUZZER   ;buzzer off
            b0bset BuzzerIsOn              
    BuzzerTimeOver02:
     b0bts0 BuzzerIsOn
     jmp BuzzerRet
            decms  BuzNumber
     jmp BuzzerRet               
    BuzzerStop:
     b0bclr BuzzerEnable
            b0bclr BuzzerIsOn
    BuzzerRet:
     endm
    ;*****************************

     include define.asm
    .CODE 
     org 0x00
     jmp Reset
     org 0x08
     jmp Interrupt

     org 0x10
    ;*******************
    Multiplication:
    ; b0mov a,CurrentL
     b0mov a,VoltageL
     mul a,VoltageL
     b0mov ELO,a
     b0mov a,R
     b0mov ALO,a
    ; b0mov a,CurrentH
     b0mov a,VoltageH
     mul a,VoltageL
     add a,ALO
     b0mov EHI,a
     b0mov a,R
     b0mov DLO,a
     b0bts0 FC
     incms DLO
     nop
     clr DHI

    ; b0mov a,CurrentL
     b0mov a,VoltageL
     mul a,VoltageH
     b0mov CLO,a
     b0mov a,R
     b0mov ALO,a
    ; b0mov a,CurrentH
     b0mov a,VoltageH
     mul a,VoltageH
     add a,ALO
     b0mov CHI,a
     b0mov a,R
     b0mov BLO,a
     b0bts0 FC
     incms BLO
     nop
     
     b0bclr FC
     b0mov a,CLO
     adc EHI,a
     b0mov a,CHI
     adc DLO,a
     b0mov a,BLO
     adc DHI,a 
     
     b0mov a,ELO
     mul a,CurrentH
     b0mov CLO,a
     b0mov a,R
     b0mov ALO,a
     b0mov a,EHI
     mul a,CurrentH
     add a,ALO
     b0mov CHI,a
     b0mov a,R
     b0mov ALO,a
     b0mov a,DLO
     mul a,CurrentH
     add a,ALO
     b0mov BLO,a
     b0mov a,R
     b0mov BHI,a

     b0mov a,ELO
     mul a,CurrentL
     b0mov ELO,a
     b0mov a,R
     b0mov ALO,a
     b0mov a,EHI
     mul a,CurrentL
     add a,ALO
     b0mov EHI,a
     b0mov a,R
     b0mov ALO,a
     b0mov a,DLO
     mul a,CurrentL
     add a,ALO
     b0mov DLO,a
     b0mov a,R
     b0mov DHI,a
     
     b0bclr FC
     b0mov a,CLO
     adc EHI,a
     b0mov a,CHI
     adc DLO,a
     b0mov a,BLO
     adc DHI,a
     b0bts0 FC
     incms BHI
     nop
     ret
     ;;;;;====================================
    Mpy16: ;;;INPUT (BY MULTIPLIER)AHI,ALO;(MULTIPLIER)BHI,BLO
     ;;;OUT  DHI,DLO,EHI,ELO
     ;;;======================================
            mov a,#10h
            b0mov counter,a
            clr DHI
            clr DLO
            b0bclr FC
     ;;;;;
    Mpyloop:
            rrcm     BHI
            rrcm     BLO
           b0bts1 FC
            jmp Notadd
     ;;;;
            mov a,ALO
            add DLO,a
            b0bts0 FC
            incms DHI
            nop
            mov a,AHI
            add DHI,a
     ;;;;
    Notadd:
     rrcm     DHI
     rrcm     DLO
     rrcm     EHI                           
     rrcm     ELO                           
     decms counter
     jmp Mpyloop
     
     ret
     ;;==========================================
    Div32: ;;;INPUT    :(DIVID)AHI,ALO;(BY DIVID)DHI,DLO,EHI,ELO
     ;;;OUTPUT   :(RESULT)BHI,BLO;(REST)CHI,CLO
     ;;==========================================
     mov a,#20h
     b0mov counter,a
     clr BHI
     clr BLO
     clr CHI
     clr CLO
     ;;;;;;;;;;;
    Divloop:
     b0bclr FC
     rlcm ELO
     rlcm EHI
     rlcm DLO
     rlcm DHI
     rlcm CLO
     rlcm CHI
     b0mov a,CHI
     sub a,AHI
     b0bts1 FZ
     jmp Nochk
     b0mov a,CLO
     sub a,ALO
     b0bts1 FC
     jmp Nogo
     jmp Nochk01 
    Nochk:
     b0bts1 FC
     jmp Nogo            
     b0mov a,CLO
     sub a,ALO
     b0bts1 FC
     decms CHI
     nop
    Nochk01:      
     b0mov a,CLO
     sub a,ALO
     b0mov CLO,a
     b0mov a,CHI
     sub a,AHI
     b0mov CHI,a    
     b0bset FC
    Nogo:
     rlcm BLO
     rlcm BHI
     decms counter
     jmp Divloop
     ret
    ;*********
    ;***************************
    CalculatePower:
    ; CLR AHI
    ; mov a,#0xdc
    ; b0mov ALO,a  ;220V
    ; b0mov a,CurrentL
    ; b0mov BLO,a
    ; b0mov a,CurrentH
    ; b0mov BHI,a
    ; call Mpy16
     b0mov a,CurrentH
     sub a,#3
     b0bts1 FC
    ; jmp $+5
    ; b0mov a,CurrentL
    ; sub a,#0xf0
    ; b0bts1 FC
     jmp CalculatePowerError
     clr errorcounter1
     b0bclr CurrentError
     call Multiplication

     b0mov a,BHI
     b0bts1 FZ
     jmp DecTime
     
     b0mov a,DHI
     sub a,PowerBufferHH
     b0bts1 FZ
     jmp NotAdj


     b0mov a,DLO
     sub a,PowerBufferH
     b0bts1 FZ
     jmp NotAdj
    AdjMiddle:
     b0mov a,EHI
     sub a,PowerBufferM
     b0bts1 FZ
     jmp NotAdj
    AdjLow:
     b0mov a,ELO
     sub a,PowerBufferL
    NotAdj: 
     b0bts1 FC
     jmp IncTime
    DecTime:
     b0mov a,TimerDrvH
     sub a,#0x30
     b0bts1 FC
     ret
     decms TimerDrvH
     nop
     ret
    IncTime:
     b0mov a,TimerDrvH
     sub a,#0xf0
     b0bts0 FC
     ret
     incms TimerDrvH
     nop
     ret
    CalculatePowerError:
     b0mov a,errorcounter1
     sub a,#250
     b0bts0 FC 
     jmp $+3
     incms errorcounter1
     ret
     b0bset CurrentError
     ret  
    ;****************************
    BuzShort_10:
     b0bset BuzzerShort
     mov a,#10
     jmp BuzActive
    BuzLong_5:
     b0bclr BuzzerShort
     mov a,#5
            jmp BuzActive
    BuzShort_3:       
     mov a,#3
     jmp $+2
    BuzShort_1:
     mov a,#1
     b0bset BuzzerShort 
    BuzActive:
     b0mov BuzNumber,a
            b0bset BuzzerIsOn
            clr TimerBuz
            b0bclr BUZZER
            b0bset BuzzerEnable
            ret

    ;****************************
    ;Test temperature subroutine
    ;****************************
    TestTemperature:
    ; b0bclr TestTemperatureEnable
     b0bclr FADLEN
     mov a,#0x93
     b0mov ADM,a
     mov a,#0x20
     b0mov ADR,a
     b0bset FADS
     b0bts1 FEOC
     jmp $-1  
     b0mov a,ADB
     b0mov resultH,a
     b0mov a,ADR
     and a,#00001111b
     b0mov resultL,a
     swap resultH 
     and a,#11110000b
     or resultL,a
     swapm resultH
     mov a,#00001111b
     and resultH,a
     
     b0mov a,resultH
     b0bts1 FZ
     jmp $+5
     b0mov a,resultL
     sub a,#0x10
     b0bts1 FC
     jmp TestTemperature01 
     
     b0mov a,resultH
     sub a,#0x0f
     b0bts0 FC
     jmp TestTemperature01

     clr errorcounter
     b0bclr TempError
     ret
    TestTemperature01:
     b0mov a,errorcounter
     sub a,#5
     b0bts0 FC 
     jmp $+3
     incms errorcounter
     ret
     b0bset TempError
     ret
    ;****************************
    ;Test  current subroutine
    ;****************************
    TestCurrent:
     b0bclr FADLEN
     mov a,#0x97
     b0mov ADM,a
     mov a,#0x20
     b0mov ADR,a
     b0bset FADS
     b0bts1 FEOC
     jmp $-1  
     b0mov a,ADB
     b0mov CurrentH,a
     b0mov a,ADR
     and a,#00001111b
     b0mov CurrentL,a
     swap CurrentH 
     and a,#11110000b
     or CurrentL,a
     swapm CurrentH
     mov a,#00001111b
     and CurrentH,a
     ret 
    ;****************************
    ;Test  voltage subroutine
    ;****************************
    TestVoltage:
     b0bclr FADLEN
     mov a,#0x91
     b0mov ADM,a
     mov a,#0x20
     b0mov ADR,a
     b0bset FADS
     b0bts1 FEOC
     jmp $-1  
     b0mov a,ADB
     b0mov VoltageH,a
     b0mov a,ADR
     and a,#00001111b
     b0mov VoltageL,a
     swap VoltageH 
     and a,#11110000b
     or VoltageL,a
     swapm VoltageH
     mov a,#00001111b
     and VoltageH,a
     ret  
    ;*********************
    SystemTimerEnd:
     b0bclr F4mS
     incms TimerBuz
     nop
     incms Timer
     nop
     b0bclr Flash
     b0mov a,Timer
     sub a,#125
     b0bts1 FC
     jmp SystemTimerEnd01
     b0bset Flash
     b0mov a,Timer
     sub a,#250
     b0bts1 FC
     jmp SystemTimerEnd01
     clr Timer
     b0bts1 FanActive
     jmp $+5
     decms FanTime
     jmp $+3
     b0bclr FanActive
     b0bclr Fan
     
     b0bts1 Timering
     jmp SystemTimerEnd01
     incms Second
     nop
     b0mov a,Second
     sub a,#60
     b0bts1 FC
     jmp SystemTimerEnd01
     clr Second
     decms Minute
     nop
    SystemTimerEnd01: 
     incms TestTemperatureTime
     nop
     b0mov a,TestTemperatureTime
     sub a,#125
     b0bts1 FC
     jmp $+3
     clr TestTemperatureTime
     b0bset TestTemperatureEnable 
     
     incms TestCurrentTime
     nop
     mov a,TestCurrentTime
     sub a,#10
     b0bts1 FC
     jmp $+3
     clr TestCurrentTime
     b0bset TestCurrentEnable

     incms KeyScanTime
     nop
     mov a,KeyScanTime
     sub a,#10
     b0bts1 FC
     jmp $+3
     clr KeyScanTime
     b0bset KeyScanEnable
    DisplayScan:
     clr P2
     call TimeDisplay  
     incms commbuffer
     nop
     b0mov a,commbuffer
     sub a,#0x05
     b0bts1 FC
     jmp DisplayScan01
     clr commbuffer
    ; clr keyactivebuffer
    DisplayScan01:
     b0mov a,commbuffer
     cmprs a,#1
     jmp $+2
     jmp DisplayScan03
     cmprs a,#2
     jmp $+2
     jmp DisplayScan04
     cmprs a,#3
     jmp $+2
     jmp DisplayScan05
     cmprs a,#4
     jmp $+2
     jmp DisplayScan06
    DisplayScan02: 
     b0bset COM0
     b0mov a,data0
     jmp DisplayScanEnd
    DisplayScan03:
     b0bset COM1
     b0mov a,data1
     jmp DisplayScanEnd
    DisplayScan04:
     b0bset COM2
     b0mov a,data2
     jmp DisplayScanEnd
    DisplayScan05:  
     b0bset COM3
     b0mov a,data3
     jmp DisplayScanEnd 
    DisplayScan06:  
     b0bset COM4
     b0bts0 On
     jmp DisplayScan07
     b0bclr DisplayOnOff
     b0bts0 Flash
     b0bset DisplayOnOff
    DisplayScan07: 
     b0mov a,data4
    DisplayScanEnd:
     xor a,#0xff
     b0mov displaybuffer,a
     mov a,#10001111b
     and P4,a
     mov a,displaybuffer
     and a,#01110000b
     or P4,a
     b0bclr P5.0
     b0bts0 displaybuffer.0
     b0bset P5.0
     ret
    ;***************************
    ;interrput subroutine
    ;*********************
    Interrupt:
     b0bset FWDRST
     push
     b0mov   accbuf,a
            b0bclr FGIE
                  
            b0bts0 FT0IRQ
            jmp SystemTimer
            b0bts0 FP02IRQ
            jmp IntZero       
            b0bts0 FP01IRQ
            jmp IntTest       
            clr INTRQ
            jmp InterruptEnd
    ;*********************       
    SystemTimer:    
     b0bclr FT0IRQ            
     mov a,#192  ;156 ;50uS
     b0mov T0C,a
     incms Timer200uS
     nop
     b0mov a,Timer200uS
     sub a,#125  ;64
     b0bts1 FC
     jmp SystemTimer01
     clr Timer200uS
     b0bset F4mS
    SystemTimer01:
     b0mov a,TimerDrv
     b0bts0 FZ
     jmp SystemTimer02
     decms TimerDrv
     nop
     jmp InterruptEnd
    SystemTimer02: 
     b0bts1 Fdrv
     jmp SystemTimer03
     b0bclr Fdrv
     b0mov a,TimerDrvH
     b0mov TimerDrv,a
     b0bset DRV
     jmp InterruptEnd
    SystemTimer03:
     b0bclr DRV
    InterruptEnd:       
            b0mov   a,accbuf
            pop
     reti
    ;**********************************
    IntTest:
     b0bclr FP01IRQ
     clr TestTime
     jmp InterruptEnd
    ;**********************************
    IntZero:
     b0bclr FP02IRQ
     b0bclr DRV
     b0bset Fdrv
     mov a,#0xff
     sub a,TimerDrvH
     b0mov TimerDrv,a
     jmp InterruptEnd
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    ;***************
    KeyScan:
     b0mov a,P1
     xor a,#0xff
     b0mov buffer,a
     rrcm buffer
     rrcm buffer
     b0mov a,buffer
     and a,#00001111b
     b0mov keybuffer,a
     b0mov buffer,a
     clr keycounter2
     mov a,#4
     b0mov keycounter1,a
    KeyScan01: 
     rrcm buffer
     b0bts0 FC
     incms keycounter2
     decms keycounter1
     jmp KeyScan01
     
     b0bclr KeyActive
     mov a,keycounter2
     b0bts0 FZ
     jmp KeyScan02
     cmprs a,#1
     ret
     b0mov a,keybuffer
     cmprs a,keyactivebuffer
     jmp $+2
     ret
     b0bset KeyActive
     b0mov a,keybuffer
     b0mov keyactivebuffer,a
     ret
    KeyScan02:
     clr keyactivebuffer
     clr keybuffer
     ret 
    ;*****************
    DataVerify:
     clr Y
     b0mov Z,#0x0e
     mov a,#0x00
    DataVerify01: 
     add a,@YZ
     decms Z
     jmp DataVerify01
     add a,@YZ 
     ret
    ;******************
    TimeDisplay: 
     clr data0
     clr data1
     b0mov a,Minute
     b0bts0 FZ
     ret
     sub a,#11
     b0bts1 FC
     jmp D10
     b0mov a,Minute
     sub a,#21
     b0bts1 FC
     jmp D20
     b0mov a,Minute
     sub a,#31
     b0bts1 FC
     jmp D30
     b0mov a,Minute
     sub a,#41
     b0bts1 FC
     jmp D40
     b0mov a,Minute
     sub a,#51
     b0bts1 FC
     jmp D50
    D60:
     b0bset DisplayTime60
     ret
    D50:
     b0bset DisplayTime50
     ret
    D40:
     b0bset DisplayTime40
     ret
    D30:
     b0bset DisplayTime30
     ret
    D20:
     b0bset DisplayTime20
     ret    
    D10:
     b0bset DisplayTime10
     ret 
    ;***************
    ;Main program
    ;****************

    Reset:
     b0bclr FGIE
     InitPort 
     call DataVerify
     cmprs a,sumbuffer
     jmp Init02
     b0mov Z,#0eh
    Init01: 
     b0mov a,@YZ
     b0bts1 FZ
     jmp Init06 
     decms Z
     jmp Init01
    Init02: 
     ClearRam
     clr flag0
     b0bset BUZZER
     b0bclr DRV
     call BuzShort_3
    ;******
    ;****** 
    Init06:
     b0mov a,port1copy
     b0mov P1,a
     b0mov a,port2copy
     b0mov P2,a
     b0mov a,port4copy
     b0mov P4,a 
     b0mov a,port5copy
     b0mov P5,a
     b0bset FGIE
     clr INTRQ
    Main:
     b0bset FWDRST
     call DataVerify
     b0mov sumbuffer,a
     b0mov a,P1
     b0mov port1copy,a
     b0mov a,P2
     b0mov port2copy,a
     b0mov a,P4
     b0mov port4copy,a
     b0mov a,P5
     b0mov port5copy,a

     BuzzerActive

     b0bts0 F4mS
     call SystemTimerEnd

     
     b0bts0 CurrentError
     jmp $+10
     b0bts0 TempError
     jmp $+8
     b0bts1 Timering
     jmp $+8
     b0mov a,Minute
     b0bts1 FZ
     jmp $+5
     call BuzLong_5
     jmp $+2
     call BuzShort_10
     jmp OnOff01
     
     b0bts1 KeyScanEnable
     jmp NotKeyScan
     b0bclr KeyScanEnable 
     call KeyScan
    NotKeyScan: 
     b0bts0 KeyActive
     jmp ReadKey 
     b0bts1 On
     jmp Main
     b0bts1 TestTemperatureEnable
     jmp NotTestTemperature
     call TestTemperature  
     b0bclr TestTemperatureEnable 
     
     b0mov a,resultH
     sub a,TemperatureH
     b0bts1 FZ
     jmp $+3
     b0mov a,resultL
     sub a,TemperatureL
     b0bts1 FC
     jmp $+6
     b0bclr DRV
     b0bset Off
     b0bclr FP02IEN
     b0bclr FP02IRQ
     jmp Main
     
     b0bts1 Off
     jmp NotTestTemperature
     b0bclr Off
     b0bset FP02IEN
     mov a,#0x40
     b0mov TimerDrvH,a
     jmp Main
    NotTestTemperature:
    ; b0bts1 On
    ; jmp Main
     b0bts1 TestCurrentEnable
     jmp Main
     call TestCurrent  
     b0bclr TestCurrentEnable
     call TestVoltage
     call CalculatePower
     
    NotTestCurrent: 
     jmp Main
    ;************
    ReadKey:
     b0bclr KeyActive
     b0bts0 Konoff
     jmp OnOff
     b0bts1 On
     jmp Main
     call BuzShort_1 
     b0bts0 Kmode
     jmp Mode
     b0bts0 Kpower
     jmp Power
    ;*******************
    Time:
     incms TimeBuffer
     nop
     b0mov a,TimeBuffer
     sub a,#7
     b0bts1 FC
     jmp Time01
     clr TimeBuffer
    Time01: 
     mov a,TimeBuffer
     b0mov Y,#TimeTable$m
     b0mov Z,#TimeTable$l
     add Z,a
     movc
     b0mov Minute,a
     clr Second
     b0bset Timering
     b0mov a,TimeBuffer
     b0bts0 FZ
     b0bclr Timering
     jmp Main
    ;****************************
    OnOff:
     call BuzShort_1
     b0bts1 On
     jmp OnOff02
    OnOff01: 
     b0bclr On
     b0bclr Timering
     call Close
     clr data0
     clr data1
     clr data2
     clr data3
     clr data4
     clr ModeBuffer
     clr PowerBuffer
     clr TimeBuffer
     clr Minute
     clr errorcounter
     b0bclr TempError
     b0bclr CurrentError
     clr errorcounter1
     b0bclr FP02IEN
     b0bclr FP01IEN
     jmp Main
    OnOff02:
     b0bset On 
     call Open
     b0bset DisplayOnOff
     b0bset DisplayMode1
     b0bset DisplayPower3
     mov a,#3
     b0mov ModeBuffer,a
     b0mov PowerBuffer,a
     clr TimeBuffer
     
     b0bset FP02IEN
     b0bset FP01IEN
     mov a,#0x80
     b0mov TimerDrvH,a 
    ; mov a,#100
    ; b0mov TimerDrv,a
     jmp Mode01
    ;****************************
    Mode:
     incms ModeBuffer
     nop
     b0mov a,ModeBuffer
     sub a,#6
     b0bts1 FC
     jmp Mode01
     mov a,#1
     b0mov ModeBuffer,a
    Mode01: 
     b0bclr DisplayMode1
     b0bclr DisplayMode2
     b0bclr DisplayMode3
     b0bclr DisplayMode4
     b0bclr DisplayMode5
     mov a,ModeBuffer
     cmprs a,#1
     jmp $+2
     jmp Mode1
     cmprs a,#2
     jmp $+2
     jmp Mode2 
     cmprs a,#3
     jmp $+2
     jmp Mode3
     cmprs a,#4
     jmp $+2
     jmp Mode4
    Mode5:
     b0bset DisplayMode5
     mov a,#5
     jmp ModeEnd
    Mode1:
     b0bset DisplayMode1
     mov a,#3
     jmp ModeEnd
    Mode2:
     b0bset DisplayMode2
     mov a,#3
     jmp ModeEnd
    Mode3:
     b0bset DisplayMode3
     mov a,#3
     jmp ModeEnd
    Mode4:
     b0bset DisplayMode4
     mov a,#4
    ModeEnd: 
     b0mov PowerBuffer,a
     jmp Power01
    ;****************************
    Power:
     incms PowerBuffer
     nop
     b0mov a,PowerBuffer
     sub a,#7
     b0bts1 FC
     jmp Power01
     mov a,#1
     b0mov PowerBuffer,a
    Power01: 
     clr data2
     b0bclr DisplayPower6
     b0bclr DisplayPower5
     mov a,PowerBuffer
     cmprs a,#1
     jmp $+2
     jmp Power1
     cmprs a,#2
     jmp $+2
     jmp Power2
     cmprs a,#3
     jmp $+2
     jmp Power3
     cmprs a,#4
     jmp $+2
     jmp Power4
     cmprs a,#5
     jmp $+2
     jmp Power5
    Power6:
     b0bset DisplayPower6
    Power5:
     b0bset DisplayPower5 
    Power4:
     b0bset DisplayPower4
    Power3:
     b0bset DisplayPower3  
    Power2:
     b0bset DisplayPower2
    Power1:
     b0bset DisplayPower1
     
     b0mov a,PowerBuffer
     b0mov Y,#PowerTable$m
     b0mov Z,#PowerTable$l
     add Z,a
     movc
     b0mov PowerBufferL,a
     b0mov a,R 
     b0mov PowerBufferM,a
     b0mov a,PowerBuffer
     b0mov Y,#PowerTableH$m
     b0mov Z,#PowerTableH$l
     add Z,a
     movc
     b0mov PowerBufferH,a
     b0mov a,R 
     b0mov PowerBufferHH,a
     
     b0mov a,PowerBuffer
     b0mov Y,#TemperatureTable$m
     b0mov Z,#TemperatureTable$l
     add Z,a
     movc
     b0mov TemperatureL,a
     b0mov a,R 
     b0mov TemperatureH,a
     jmp Main 
    ;**************
    Close:
     b0bset FanActive
     mov a,#120
     b0mov FanTime,a
     ret
    ;************** 
    Open: b0bset FAN
     b0bclr FanActive
     ret  
     
    PowerTable:
    ; dw 0x0000,0x45d1,0x8342,0xc0b2,0xfe23,0x3b94,0x7904
     dw 0x0000,0x0ed6,0x8601,0xfd2c,0x7457,0xeb85,0x62ad
    PowerTableH:
    ; dw 0x00,0x17,0x21,0x2b,0x35,0x40,0x4a
     dw 0x0000,0x4a6b,0x6b29,0x8be7,0xaca6,0xcd64,0xee23
    TimeTable:
     dw 0x00,10,20,30,40,50,60
    TemperatureTable:
    ; dw 0x0000,0x013e,0x03a2,0x0674,0x0940,0x0b5c,0x0c4b
     dw 0x0000,0x00e7,0x02e3,0x0578,0x085c,0x0ad0,0x0bdb

    看《匠人手记》,与匠人同行!北航出版,正在热卖!

    Re:基于SN8P1706芯片的电磁炉(源程序)(sonix)
    ANDY(游客)发表评论于2007-3-16 23:08:00  个人主页 | 引用 | 返回 | 删除 | 回复

    ANDY(游客)LZ也能给份电路图给我吗?
    先谢谢了!
    WYJOZL@163.COM

    看《匠人手记》,与匠人同行!北航出版,正在热卖!

    Re:基于SN8P1706芯片的电磁炉(源程序)(sonix)
    ever(游客)发表评论于2007-3-11 10:37:00  个人主页 | 引用 | 返回 | 删除 | 回复

    ever(游客)能否提供电路?
    ever820120@126.com
    谢谢!

    看《匠人手记》,与匠人同行!北航出版,正在热卖!

    回复:基于SN8P1706芯片的电磁炉(源程序)(sonix)
    PANDA(游客)发表评论于2006-8-6 14:32:00  个人主页 | 引用 | 返回 | 删除 | 回复

    PANDA(游客)

    你应该把配合使用的电路给显示出来,否则又怎么知道好不好呢?

                                                 

     

    看《匠人手记》,与匠人同行!北航出版,正在热卖!

    回复:基于SN8P1706芯片的电磁炉(源程序)(sonix)
    OPTK(游客)发表评论于2006-8-3 19:16:00  个人主页 | 引用 | 返回 | 删除 | 回复

    OPTK(游客)

    你真伟大!! 我很想学程序设计,但是无从下手.能交个朋友吗?

    oppertunitys@163.com

    看《匠人手记》,与匠人同行!北航出版,正在热卖!

    发表评论:
    载入中...

    广告5号位 [投放]


    学习板、开发板、编程器、下载器、仿真器(查看详情……)

    站内搜索


    站外搜索


    百度  google
    mp3  歌词 
    图片  FLASH 
    知道  文档
    新闻  词典 
    地图  mp3 
    软件  天网 
    雅虎  爱问 
    搜狗  讯雷 
    网讯  华军 
    天空 

    21IC器件搜索
    百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     
     

    新鲜货色

    匠人手记

    近期动态

    载入中...

      《匠人手记》购书全攻略 
     书友近况:淘书手记答疑与讨论:什么是散转程序 
     《匠人手记》新书艳照
     EDN《匠人手记》签名售书优惠活动开始报名啦!
     欢迎加入《匠人手记》EDN书友会
     欢迎加入《匠人手记》书友会Q群
     《匠人手记》终稿目录
     《匠人手记》封面,请大家先睹为快
     上周六收到了北航寄来的《匠人手记》清样,让大家先睹为快

    匠人原创

    粉丝评论

    往日酷贴

    载入中...

    载入中...



     网络酷文:博客,改变的不仅仅是图书 
     网络酷文:C语言宏定义技巧C语言 条件编译详解

      21IC上海2008-04聚会报名进行中。。。 
     两分钟让你明白什么是ERP![转]
      神奇的Duff's Device 算法
      实用一线通讯电路及软件设计方法
      程序员的“七年之痒”
      史上最短但最精彩的武侠小说
      网络无厘头文学《缺钙水浒》(爆笑)

     你的博客还能持续多久(转贴)
     电动车无刷电机控制器软件设计要点(作者:谢渊斌)

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!