📄 dac_tlc5615.lis
字号:
.module DAC_TLC5615.c
.area text(rom, con, rel)
0000 .dbfile D:\8_DAC_TLC5615\DAC_TLC5615.c
0000 .dbfile D:\8_DAC_TLC5615\delay.h
0000 .dbfunc e delay_nus _delay_nus fV
0000 ; time -> R16,R17
.even
0000 _delay_nus::
0000 .dbline -1
0000 .dbline 33
0000 ; //#define F_CPU 12000000
0000 ; #define F_CPU 11059200
0000 ; //#define F_CPU 8000000
0000 ; //#define F_CPU 7372800
0000 ; //#define F_CPU 4000000
0000 ; /*************************************************************************
0000 ; 通用延时头文件:
0000 ; delay_nus(n)延时n微秒
0000 ; delay_nms(n)延时n毫秒
0000 ; *************************************************************************/
0000 ; #if F_CPU == 12000000
0000 ; void delay_nus(unsigned int time)
0000 ; {
0000 ; while (time!=0)
0000 ; {
0000 ; NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
0000 ; time--;
0000 ; }
0000 ; }
0000 ; void delay_nms(unsigned int time)
0000 ; {
0000 ; unsigned int i;
0000 ; while (time!=0)
0000 ; {
0000 ; for(i=0;i<1740;i++);
0000 ; time--;
0000 ; }
0000 ; }
0000 ; #endif
0000 ;
0000 ; #if F_CPU == 11059200
0000 ; void delay_nus(unsigned int time)
0000 ; {
0000 09C0 xjmp L3
0002 L2:
0002 .dbline 35
0002 ; while (time!=0)
0002 ; {
0002 .dbline 36
0002 ; NOP();NOP();NOP();NOP();NOP();NOP();NOP();
0002 0000 nop
0004 .dbline 36
0004 0000 nop
0006 .dbline 36
0006 0000 nop
0008 .dbline 36
0008 0000 nop
000A .dbline 36
000A 0000 nop
000C .dbline 36
000C 0000 nop
000E .dbline 36
000E 0000 nop
0010 .dbline 37
0010 ; time--;
0010 0150 subi R16,1
0012 1040 sbci R17,0
0014 .dbline 38
0014 ; }
0014 L3:
0014 .dbline 34
0014 0030 cpi R16,0
0016 0107 cpc R16,R17
0018 A1F7 brne L2
001A X0:
001A .dbline -2
001A L1:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r time 16 i
001C .dbend
001C .dbfunc e delay_nms _delay_nms fV
001C ; i -> R20,R21
001C ; time -> R16,R17
.even
001C _delay_nms::
001C 4A93 st -y,R20
001E 5A93 st -y,R21
0020 .dbline -1
0020 .dbline 41
0020 ; }
0020 ; void delay_nms(unsigned int time)
0020 ; {
0020 0BC0 xjmp L7
0022 L6:
0022 .dbline 44
0022 ; unsigned int i;
0022 ; while (time!=0)
0022 ; {
0022 .dbline 45
0022 ; for(i=0;i<1580;i++);
0022 4427 clr R20
0024 5527 clr R21
0026 02C0 xjmp L12
0028 L9:
0028 .dbline 45
0028 L10:
0028 .dbline 45
0028 4F5F subi R20,255 ; offset = 1
002A 5F4F sbci R21,255
002C L12:
002C .dbline 45
002C 4C32 cpi R20,44
002E E6E0 ldi R30,6
0030 5E07 cpc R21,R30
0032 D0F3 brlo L9
0034 X1:
0034 .dbline 46
0034 ; time--;
0034 0150 subi R16,1
0036 1040 sbci R17,0
0038 .dbline 47
0038 ; }
0038 L7:
0038 .dbline 43
0038 0030 cpi R16,0
003A 0107 cpc R16,R17
003C 91F7 brne L6
003E X2:
003E .dbline -2
003E L5:
003E .dbline 0 ; func end
003E 5991 ld R21,y+
0040 4991 ld R20,y+
0042 0895 ret
0044 .dbsym r i 20 i
0044 .dbsym r time 16 i
0044 .dbend
.area code(ram, con, rel)
0000 .dbfile D:\8_DAC_TLC5615\delay.h
.area lit(rom, con, rel)
0000 _SMG_Conver::
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
000A 777C .byte 'w,124
000C 395E .byte 57,94
000E 7971 .byte 'y,'q
0010 0040 .byte 0,64
0012 .dbfile D:\8_DAC_TLC5615\AVR_XQV12.h
0012 .dbsym e SMG_Conver _SMG_Conver A[18:18]kc
.area data(ram, con, rel)
0000 .dbfile D:\8_DAC_TLC5615\AVR_XQV12.h
.area text(rom, con, rel)
0044 .dbfile D:\8_DAC_TLC5615\AVR_XQV12.h
0044 .dbfunc e Scan_Key _Scan_Key fc
0044 ; i -> R20
.even
0044 _Scan_Key::
0044 4A93 st -y,R20
0046 5A93 st -y,R21
0048 .dbline -1
0048 .dbline 69
0048 ;
0048 ; #define TRUE 0xff //真
0048 ; #define FALSE 0x00 //假
0048 ; #define null 0x00 //空
0048 ; #define Open_LED PORTA|=0x10 //使能LED
0048 ; #define Close_LED PORTA&=~0x10 //关闭LED
0048 ; #define LED PORTB //LED端口
0048 ; #define SMG PORTB //数码管端口
0048 ; #define Open_SMG_DATA PORTA|=0x08 //使能数码管数据
0048 ; #define Close_SMG_DATA PORTA&=~0x08 //关闭数码管数据
0048 ; #define Open_SMG_BIT PORTA|=0x04 //使能数码管位选择
0048 ; #define Close_SMG_BIT PORTA&=~0x04 //关闭数码管位选择
0048 ; #define KEY0 (PIND&0x04) //INT0
0048 ; #define KEY1 (PIND&0x08) //INT1
0048 ; #define SetSclk (PORTC|=0x80) //LCD12864 CLK
0048 ; #define ClrSclk (PORTC&=~0x80)
0048 ; #define SetRs (PORTD|=0x40) //LCD12864 CS
0048 ; #define ClrRs (PORTD&=~0x40)
0048 ; #define SetSid (PORTC|=0x40) //LCD12864 DATA
0048 ; #define ClrSid (PORTC&=~0x40)
0048 ; #define D0 0x20 //18B20 DATA
0048 ; #define port PORTA
0048 ; #define ddrt DDRA
0048 ; #define pin PINA
0048 ; #define Set_CS5615 (PORTA|=0x80) //片选5615
0048 ; #define Clr_CS5615 (PORTA&=~0x80) //释放
0048 ; #define Period 0x6bfe //PWM脉冲周期20ms
0048 ; #define rd_device_add 0xa3 //定义器件读地址
0048 ; #define wr_device_add 0xa2 //定义器件写地址
0048 ; #define START 0x08 //起始信号
0048 ; #define MT_SLA_ACK 0x18
0048 ; #define MT_DATA_ACK 0x28
0048 ; #define RE_START 0x10
0048 ; #define MR_SLA_ACK 0x40
0048 ; #define MR_DATA_NOACK 0x58
0048 ; #define START 0x08
0048 ; #define MT_SLA_ACK 0x18
0048 ; #define MT_DATA_ACK 0x28
0048 ; #define RE_START 0x10
0048 ; #define MR_SLA_ACK 0x40
0048 ; #define MR_DATA_NOACK 0x58
0048 ; #define MR_DATA_ACK 0x50
0048 ;
0048 ; #if AD==TRUE //条件编译指令
0048 ; unsigned char Adc_Mux=0;
0048 ; unsigned int Adc0_Rel=0;
0048 ; unsigned int Adc1_Rel=0;
0048 ; unsigned int Adc0_Catch=0;
0048 ; unsigned int Adc1_Catch=0;
0048 ; unsigned int Adc0_Conver[20];
0048 ; unsigned int Adc1_Conver[20];
0048 ; unsigned char Adc0_F;
0048 ; unsigned char Adc1_F;
0048 ; #endif //条件编译结束
0048 ; unsigned char Key_Number; //全局变量:按键标志
0048 ; unsigned int temprter;
0048 ; #pragma data:code
0048 ; const unsigned char SMG_Conver[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0048 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
0048 ; //数码管译码数组
0048 ; #pragma data:data
0048 ; /*******************************************************/
0048 ; /****** 函数名称: Scan_Key() ******/
0048 ; /****** 功 能: 键盘扫描 ******/
0048 ; /****** 参 数: 无 ******/
0048 ; /****** 返回值 : 按键的键值,无按键时返回null ******/
0048 ; /*******************************************************/
0048 ; unsigned char Scan_Key(void)
0048 ; {
0048 .dbline 71
0048 ; unsigned char i;
0048 ; PORTC=0x00;
0048 2224 clr R2
004A 25BA out 0x15,R2
004C .dbline 72
004C ; DDRC =0xf0; //设置端口高4位输出,低四位输入
004C 80EF ldi R24,240
004E 84BB out 0x14,R24
0050 .dbline 73
0050 ; PORTC=0x0f; //低四位内部上拉
0050 8FE0 ldi R24,15
0052 85BB out 0x15,R24
0054 .dbline 74
0054 ; delay_nus(1); //短暂延时
0054 01E0 ldi R16,1
0056 10E0 ldi R17,0
0058 D3DF xcall _delay_nus
005A .dbline 75
005A ; i=PINC&0x0f; //读取端口电平
005A 43B3 in R20,0x13
005C 4F70 andi R20,15
005E .dbline 76
005E ; if(i!=0x0f) //判断是否有键按下
005E 4F30 cpi R20,15
0060 B1F0 breq L14
0062 X3:
0062 .dbline 77
0062 ; {
0062 .dbline 78
0062 ; PORTC=0x00;
0062 2224 clr R2
0064 25BA out 0x15,R2
0066 .dbline 79
0066 ; DDRC =0x0f; //设置端口低4位输出,高四位输入
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -