📄 main.lis
字号:
.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 + -