⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 此程序是用CYPRESS单片机编写
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile ./main.c
 0000                   .dbfunc e initializtion_deal _initializtion_deal fV
 0000           _initializtion_deal::
 0000                   .dbline -1
 0000                   .dbline 93
 0000           ; //***********************************************************************
 0000           ; //*                                                                     *
 0000           ; //*    Filename:      Freq_occur_ad_to_pwm\main.c                       *
 0000           ; //*    Date:          2006/3/2                                          *
 0000           ; //*    File Version:  V1.0                                              *
 0000           ; //*                                                                     *
 0000           ; //*    Author:        Cxb                                               *
 0000           ; //*    Company:                                                         *
 0000           ; //*                                                                     *
 0000           ; //***********************************************************************
 0000           ; //*                                                                     *
 0000           ; //*    Files required:CYPRESS CY8C24123的数据手册                       *
 0000           ; //*                   频率发生器功能说明书                              *
 0000           ; //*                                                                     *
 0000           ; //***********************************************************************
 0000           ; //*                                                                     *
 0000           ; //*    Notes: DISPLAY MODEL:    LED DISPLAY                             *
 0000           ; //*           MICROCOMPUTER:    CYPRESS CY8C24423A(28PIN SSOP)         *
 0000           ; //*           CRYSTAL:          石英晶振32.768KHz(倍频到24MHz)        *
 0000           ; //*                                                                     *
 0000           ; //***********************************************************************
 0000           ; 
 0000           ; //-----------------------------------------------------------------------
 0000           ; // C main line
 0000           ; //-----------------------------------------------------------------------
 0000           ;       
 0000           ; #include <m8c.h>        // part specific constants and macros
 0000           ; #include "PSoCAPI.h"    // PSoC API definitions for all User Modules
 0000           ; 
 0000           ; 
 0000           ; //*************************************
 0000           ; //
 0000           ; // 定义中断处理程序
 0000           ; //
 0000           ; #pragma interrupt_handler Timer8_ISR  // Timer8溢出中断的中断向量
 0000           ; 
 0000           ; 
 0000           ; //*************************************
 0000           ; //
 0000           ; // 定义全局变量
 0000           ; //
 0000           ; 
 0000           ; unsigned int  iTEMP;
 0000           ; unsigned int  CLOCK_DATA_NEW,CLOCK_DATA_SET;          // 时钟数据(以分钟为单位)
 0000           ; unsigned int  BESPEAK_1_TIME_NEW,BESPEAK_1_TIME_SET;  // 预约一时间(00:00--23:59小时,24:00以上为--)
 0000           ; unsigned int  AD_VALUE[8];
 0000           ; 
 0000           ; unsigned long lTEMP;
 0000           ; 
 0000           ; unsigned char cTEMP,cTEMP_H,cTEMP_L;
 0000           ; unsigned char FLAG0,FLAG1,FLAG2;
 0000           ; unsigned char T_10MS,T_1S,T_3S,T_10S,T_SLEEP_1M,T_FLASH_500MS,T_CLOCK_500MS,T_HEAT_UP_1M,T_HEAT_UP_4H,T_50MS;
 0000           ; unsigned char BUZZ_EN,BUZZ_NEW,BUZZ_COU;              // 蜂鸣器状态
 0000           ; unsigned char AD_COUNT,AD_ROOM_TMP;
 0000           ; unsigned char SET_TMP_NEW,SET_TMP_SET;
 0000           ; unsigned char ERROR_NEW;              // 故障状态:0=无故障,1=漏电保护,2=超高温,3=温度传感器短/开路,4=防干烧
 0000           ; unsigned char DISP_BIT,DISP_DATA_1,DISP_DATA_2,DISP_DATA_3,DISP_DATA_4,DISP_DATA_5,DISP_DATA_6;
 0000           ; unsigned char KEY_CODE,KEY_COU,KEY_NEW,T_ON_OFF_4S,KEY_SET,KEY_SERIES_NEW,KEY_SERIES_COU,T_KEY_60S;
 0000           ; unsigned char OFF_FUNCTION;           // 待机功能状态:0=待机默认,1=设定时钟
 0000           ; unsigned char ON_FUNCTION;            // 工作功能状态:0=工作默认,1=设定水温,2=预约一
 0000           ; unsigned char BESPEAK_DISP;           // 预约显示状态:0=预约温度,1=预约时间
 0000           ; unsigned char BESPEAK_BIT;            // 预约状态:0=预约1无效,1=预约1有效
 0000           ; unsigned char BESPEAK_UP_BIT;         // 预约时间到:0=预约1时间未到,1=预约1时间到
 0000           ; unsigned char BESPEAK_1_TMP_NEW,BESPEAK_1_TMP_SET;
 0000           ; unsigned char POWER_EN;
 0000           ; unsigned char KEY_CREEPAGE,T_CHECK_500MS,CREEPAGE_COU;
 0000           ; unsigned char ROOM_RISE,T_RISE_6S;
 0000           ; 
 0000           ; //FLAG0.0     ;1=
 0000           ; //FLAG0.1     ;1=
 0000           ; //FLAG0.2     ;1=
 0000           ; //FLAG0.3     ;1=
 0000           ; //FLAG0.4     ;1=
 0000           ; //FLAG0.5     ;1=
 0000           ; //FLAG0.6     ;1=
 0000           ; //FLAG0.7     ;1=
 0000           ; 
 0000           ; //FLAG1.0     ;1=
 0000           ; //FLAG1.1     ;1=
 0000           ; //FLAG1.2     ;1=
 0000           ; //FLAG1.3     ;1=
 0000           ; //FLAG1.4     ;1=
 0000           ; //FLAG1.5     ;1=
 0000           ; //FLAG1.6     ;1=
 0000           ; //FLAG1.7     ;1=
 0000           ; 
 0000           ; 
 0000           ; //*************************************
 0000           ; //
 0000           ; // 函数initializtion_deal()为:初始化处理子程序
 0000           ; //
 0000           ; void initializtion_deal()
 0000           ; {
 0000                   .dbline 94
 0000           ;       PGA_Start(PGA_MEDPOWER);        // Turn on PGA power
 0000 10                push X
 0001 5002              mov A,2
 0003 7C0000            xcall _PGA_Start
 0006                   .dbline 95
 0006           ;       ADCINC14_Start(ADCINC14_HIGHPOWER);// Turn on Analog section
 0006 5003              mov A,3
 0008 7C0000            xcall _ADCINC14_Start
 000B                   .dbline 96
 000B           ;       ADCINC14_GetSamples(0);         // Start ADC to read continuously
 000B 5000              mov A,0
 000D 7C0000            xcall _ADCINC14_GetSamples
 0010                   .dbline 97
 0010           ;       Timer8_Start();
 0010 7C0000            xcall _Timer8_Start
 0013                   .dbline 98
 0013           ;       Timer8_EnableInt();             // Enable Timer8 Interrupt
 0013 7C0000            xcall _Timer8_EnableInt
 0016 20                pop X
 0017                   .dbline -2
 0017                   .dbline 103
 0017           ; //    PWM16_WritePeriod(999);         // Set period to eight clocks
 0017           ; //    PWM16_WritePulseWidth(332);     // Set pulse width to generate a 50% duty cycle
 0017           ; //    PWM16_DisableInt();             // Ensure interrupt is disabled
 0017           ; //    PWM16_Start();                  // Start the PWM16
 0017           ; }
 0017           L1:
 0017                   .dbline 0 ; func end
 0017 7F                ret
 0018                   .dbend
 0018                   .dbfunc e ad_conv_deal _ad_conv_deal fV
 0018           _ad_conv_deal::
 0018                   .dbline -1
 0018                   .dbline 111
 0018           ; 
 0018           ; 
 0018           ; //*************************************
 0018           ; //
 0018           ; // 函数ad_conv_deal()为:AD采样处理子程序
 0018           ; //
 0018           ; void ad_conv_deal()
 0018           ; {
 0018           L3:
 0018                   .dbline 113
 0018           L4:
 0018                   .dbline 113
 0018 10                push X
 0019 7C0000            xcall _ADCINC14_fIsDataAvailable
 001C 20                pop X
 001D 3900              cmp A,0
 001F AFF8              jz L3
 0021                   .dbline 114
 0021 10                push X
 0022 7C0000            xcall _ADCINC14_iGetData
 0025 5300              mov [__r1],A
 0027 5A00              mov [__r0],X
 0029 20                pop X
 002A 5F0020            mov [__r3],[_AD_COUNT]
 002D 550000            mov [__r2],0
 0030 6500              asl [__r3]
 0032 6B00              rlc [__r2]
 0034 060038            add [__r3],<_AD_VALUE
 0037 0E0038            adc [__r2],>_AD_VALUE
 003A 5100              mov A,[__r0]
 003C 3F00              mvi [__r3],A
 003E 5100              mov A,[__r1]
 0040 3F00              mvi [__r3],A
 0042                   .dbline 115
 0042 10                push X
 0043 7C0000            xcall _ADCINC14_ClearFlag
 0046 20                pop X
 0047                   .dbline 117
 0047 7620              inc [_AD_COUNT]
 0049                   .dbline 118
 0049 5007              mov A,7
 004B 3A20              cmp A,[_AD_COUNT]
 004D D073              jnc L6
 004F           X0:
 004F                   .dbline 119
 004F                   .dbline 120
 004F 552000            mov [_AD_COUNT],0
 0052                   .dbline 121
 0052 5139              mov A,[_AD_VALUE+1]
 0054 023B              add A,[_AD_VALUE+2+1]
 0056 5300              mov [__r1],A
 0058 5138              mov A,[_AD_VALUE]
 005A 0A3A              adc A,[_AD_VALUE+2]
 005C 5300              mov [__r0],A
 005E 513D              mov A,[_AD_VALUE+4+1]
 0060 0400              add [__r1],A
 0062 513C              mov A,[_AD_VALUE+4]
 0064 0C00              adc [__r0],A
 0066 513F              mov A,[_AD_VALUE+6+1]
 0068 0400              add [__r1],A
 006A 513E              mov A,[_AD_VALUE+6]
 006C 0C00              adc [__r0],A
 006E 5141              mov A,[_AD_VALUE+8+1]
 0070 0400              add [__r1],A
 0072 5140              mov A,[_AD_VALUE+8]
 0074 0C00              adc [__r0],A
 0076 5143              mov A,[_AD_VALUE+10+1]
 0078 0400              add [__r1],A
 007A 5142              mov A,[_AD_VALUE+10]
 007C 0C00              adc [__r0],A
 007E 5145              mov A,[_AD_VALUE+12+1]
 0080 0400              add [__r1],A
 0082 5144              mov A,[_AD_VALUE+12]
 0084 0C00              adc [__r0],A
 0086 5147              mov A,[_AD_VALUE+14+1]
 0088 0400              add [__r1],A
 008A 5146              mov A,[_AD_VALUE+14]
 008C 0C00              adc [__r0],A
 008E 5F3700            mov [_lTEMP+3],[__r1]
 0091 5F3600            mov [_lTEMP+2],[__r0]
 0094 553500            mov [_lTEMP+1],0
 0097 553400            mov [_lTEMP],0
 009A                   .dbline 122
 009A 5F0034            mov [__r0],[_lTEMP]
 009D 5F0035            mov [__r1],[_lTEMP+1]
 00A0 5F0036            mov [__r2],[_lTEMP+2]
 00A3 5F0037            mov [__r3],[_lTEMP+3]
 00A6 5003              mov A,3
 00A8           X1:
 00A8 70FB              and F,-5
 00AA 6E00              rrc [__r0]
 00AC 6E00              rrc [__r1]
 00AE 6E00              rrc [__r2]
 00B0 6E00              rrc [__r3]
 00B2 78                dec A
 00B3 BFF4              jnz X1
 00B5 5F0000            mov [__r1],[__r3]
 00B8 5F0000            mov [__r0],[__r2]
 00BB 5F3900            mov [_AD_VALUE+1],[__r1]
 00BE 5F3800            mov [_AD_VALUE],[__r0]
 00C1                   .dbline 123
 00C1           L6:
 00C1                   .dbline -2
 00C1                   .dbline 124
 00C1           ;       // (Do something useful with the data)
 00C1           ;       while(ADCINC14_fIsDataAvailable()==0);  // Wait for data to be ready
 00C1           ;       AD_VALUE[AD_COUNT] = ADCINC14_iGetData();               // Get Data
 00C1           ;       ADCINC14_ClearFlag();                   // Clear data ready flag
 00C1           ;       
 00C1           ;       AD_COUNT++;
 00C1           ;       if(AD_COUNT>7)          // 采样4次后
 00C1           ;       {
 00C1           ;               AD_COUNT=0;
 00C1           ;               lTEMP=AD_VALUE[0]+AD_VALUE[1]+AD_VALUE[2]+AD_VALUE[3]+AD_VALUE[4]+AD_VALUE[5]+AD_VALUE[6]+AD_VALUE[7];
 00C1           ;               AD_VALUE[0]=lTEMP>>3;
 00C1           ;       }
 00C1           ; }
 00C1           L2:
 00C1                   .dbline 0 ; func end
 00C1 7F                ret
 00C2                   .dbend
 00C2                   .dbfunc e key_scan_deal _key_scan_deal fV
 00C2           _key_scan_deal::
 00C2                   .dbline -1
 00C2                   .dbline 132
 00C2           ; 
 00C2           ; 
 00C2           ; //*************************************
 00C2           ; //
 00C2           ; // 函数key_scan_deal()为:按键扫描处理子程序
 00C2           ; //
 00C2           ; void key_scan_deal()
 00C2           ; {
 00C2                   .dbline 133
 00C2           ;       PRT0DR=0xFF;    // 将P0口置1
 00C2 6200FF            mov REG[ 0],-1
 00C5                   .dbline 136
 00C5           ;       //PRT0GS=0xD4;
 00C5           ;       //PRT0DM2=0xD5;
 00C5           ;       PRT0DM1=0xD5;
 00C5 7110              or F,0x10  ; iopage = 1
 00C7 6201D5            mov REG[0x1],-43
 00CA                   .dbline 137
 00CA           ;       PRT0DM0=0x2A;   // 将P0.2/P0.4/P0.6/P0.7置为输入口
 00CA 62002A            mov REG[ 0],42
 00CD 70EF              and F,0xEF ; iopage = 0
 00CF                   .dbline 138
 00CF           ;       cTEMP=10;
 00CF 55330A            mov [_cTEMP],10
 00D2 8004              xjmp L17
 00D4           L16:
 00D4                   .dbline 140
 00D4                   .dbline 141
 00D4 40                        NOP
 00D5           
 00D5                   .dbline 142
 00D5 7A33              dec [_cTEMP]
 00D7                   .dbline 143
 00D7           L17:
 00D7                   .dbline 139
 00D7           ;       while(cTEMP!=0)
 00D7 3C3300            cmp [_cTEMP],0
 00DA BFF9              jnz L16
 00DC                   .dbline 145
 00DC           ;       {
 00DC           ;               asm("NOP");
 00DC           ;               cTEMP--;
 00DC           ;       }
 00DC           ;                       //*****按键检测*****
 00DC           ;       KEY_CODE=0;
 00DC 551400            mov [_KEY_CODE],0
 00DF                   .dbline 146
 00DF           ;       if((PRT0DR&0x04)==0)    KEY_CODE|=0x01; // 工作/待机键
 00DF 490004            tst REG[ 0],4
 00E2 B004              jnz L19
 00E4                   .dbline 146
 00E4 2E1401            or [_KEY_CODE],1
 00E7           L19:
 00E7                   .dbline 147
 00E7           ;       if((PRT0DR&0x10)==0)    KEY_CODE|=0x02; // 预约使用键
 00E7 490010            tst REG[ 0],16
 00EA B004              jnz L21
 00EC                   .dbline 147
 00EC 2E1402            or [_KEY_CODE],2
 00EF           L21:
 00EF                   .dbline 148
 00EF           ;       if((PRT0DR&0x40)==0)    KEY_CODE|=0x04; // 时钟/温度键
 00EF 490040            tst REG[ 0],64
 00F2 B004              jnz L23
 00F4                   .dbline 148
 00F4 2E1404            or [_KEY_CODE],4
 00F7           L23:
 00F7                   .dbline 149
 00F7           ;       if((PRT0DR&0x80)==0)    KEY_CODE|=0x08; // 即时加热键
 00F7 490080            tst REG[ 0],-128
 00FA B004              jnz L25
 00FC                   .dbline 149
 00FC 2E1408            or [_KEY_CODE],8
 00FF           L25:
 00FF                   .dbline 152
 00FF           ;                       
 00FF           ;                       //*****开始扫描*****
 00FF           ;       if(KEY_CODE!=0) //***有键按下***
 00FF 3C1400            cmp [_KEY_CODE],0
 0102 A04D              jz L27
 0104                   .dbline 153
 0104           ;       {
 0104                   .dbline 154
 0104           ;               KEY_COU++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -