hd_support.lis
来自「《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码」· LIS 代码 · 共 328 行 · 第 1/2 页
LIS
328 行
001E ; PORTB = 0b11111111; //在PB口0..5上输出光柱效果
001E 8FEF ldi R24,255
0020 85B9 out 0x5,R24
0022 .dbline 116
0022 ; PORTC = 0b11110111; //初始化PC口,PC.3设置为输入
0022 87EF ldi R24,247
0024 88B9 out 0x8,R24
0026 .dbline 117
0026 ; PORTD = 0b11111111; //没有使用的端口均设置为输入状态并开启内部上拉电阻
0026 8FEF ldi R24,255
0028 8BB9 out 0xb,R24
002A .dbline 119
002A ;
002A ; DDRB = 0b11111111;
002A 84B9 out 0x4,R24
002C .dbline 120
002C ; DDRC = 0b11110111;
002C 87EF ldi R24,247
002E 87B9 out 0x7,R24
0030 .dbline 121
0030 ; DDRD = 0b00000000;
0030 2224 clr R2
0032 2AB8 out 0xa,R2
0034 .dbline -2
0034 L2:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbend
0036 .dbfunc e Timer0_INIT _Timer0_INIT fV
.even
0036 _Timer0_INIT::
0036 .dbline -1
0036 .dbline 131
0036 ; }
0036 ;
0036 ; /***********************************************************
0036 ; * 函数声明:定时器0初始化函数 *
0036 ; * 输入: 无 *
0036 ; * 输出: 无 *
0036 ; * 调用函数:无 *
0036 ; ***********************************************************/
0036 ; void Timer0_INIT(void)
0036 ; {
0036 .dbline 134
0036 ; //*在这里粘贴从代码生成向导中生成的初始化代码*//
0036 ; //*要求为1K的溢出中断 *//
0036 ; TCCR0B = 0x00; //停止定时器0
0036 2224 clr R2
0038 25BC out 0x25,R2
003A .dbline 135
003A ; TCNT0 = 0xFD; //设置定时器初始值
003A 8DEF ldi R24,253
003C 86BD out 0x26,R24
003E .dbline 136
003E ; TCCR0A = 0x00; //关闭定时器比较匹配功能
003E 24BC out 0x24,R2
0040 .dbline 137
0040 ; TCCR0B = 0x04; //启动定时器,256分频
0040 84E0 ldi R24,4
0042 85BD out 0x25,R24
0044 .dbline -2
0044 L3:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbend
0046 .dbfunc e Timer0_OVF_ISR _Timer0_OVF_ISR fV
.even
0046 _Timer0_OVF_ISR::
0046 00D0 rcall push_lset
0048 .dbline -1
0048 .dbline 147
0048 ; }
0048 ;
0048 ; /***********************************************************
0048 ; * 函数声明:定时器0溢出中断处理程序 *
0048 ; * 输入: 无 *
0048 ; * 输出: 无 *
0048 ; * 调用函数:INSERT_TIMER0_OVF_ISR_CODE *
0048 ; ***********************************************************/
0048 ; void Timer0_OVF_ISR(void)
0048 ; {
0048 .dbline 149
0048 ; //*这里要添加对定时计数器重新设置计数底数的代码*//
0048 ; INSERT_TIMER0_OVF_ISR_CODE
0048 7894 sei
004A .dbline 149
004A 00D0 rcall _Insert_Timer0_OVF_ISR_Code
004C .dbline -2
004C L4:
004C 00D0 rcall pop_lset
004E .dbline 0 ; func end
004E 1895 reti
0050 .dbend
0050 .dbfunc e ADC_INIT _ADC_INIT fV
.even
0050 _ADC_INIT::
0050 .dbline -1
0050 .dbline 163
0050 ; }
0050 ;
0050 ; /***********************************************************
0050 ; * 函数说明:ADC初始化程序 *
0050 ; * 输入: 无 *
0050 ; * 输出: 无 *
0050 ; * -------------------------------------------------------- *
0050 ; * [说明] *
0050 ; * 这里的代码是为了方便大家理解直接从代码生成器 *
0050 ; * 中生成,经过简单错误修改后的代码。以后使用的时候,*
0050 ; * 我们将采用更为规范的格式。 *
0050 ; ***********************************************************/
0050 ; void ADC_INIT(void)
0050 ; {
0050 .dbline 164
0050 ; ADMUX = 0x43; //选择AVCC,结果右对齐,选择ADC通道3
0050 83E4 ldi R24,67
0052 80937C00 sts 124,R24
0056 .dbline 165
0056 ; ADCSRA = 0x8C; //ADC模块使能,未开始转换,自动触发关闭,中断使能,预分频比16
0056 8CE8 ldi R24,140
0058 80937A00 sts 122,R24
005C .dbline 166
005C ; ADCSRB = 0x00; //ACME用于模拟比较器,这里忽略.由于没有使用自动触发功能,对ADTS的设置没有意义
005C 2224 clr R2
005E 20927B00 sts 123,R2
0062 .dbline -2
0062 L5:
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbend
0064 .dbfunc e ADC_ISR _ADC_ISR fV
.even
0064 _ADC_ISR::
0064 00D0 rcall push_lset
0066 .dbline -1
0066 .dbline 183
0066 ;
0066 ; /*
0066 ; ADMUX = (ADMUX_AREF<<REFS0)|(3<<MUX0);
0066 ; ADCSRA = (1<<ADEN)|(1<<ADIE)|(ADCSRA_PRESCALER_DIV_16<<ADPS0);
0066 ; ASCSRB = 0x00;
0066 ; */
0066 ; }
0066 ;
0066 ; /***********************************************************
0066 ; * 函数声明:ADC转换完成中断处理程序 *
0066 ; * 输入: 无 *
0066 ; * 输出: 无 *
0066 ; * 调用函数:INSERT_ADC_ISR_CODE *
0066 ; ***********************************************************/
0066 ;
0066 ; void ADC_ISR (void)
0066 ; {
0066 .dbline 184
0066 ; INSERT_ADC_ISR_CODE
0066 7894 sei
0068 .dbline 184
0068 00D0 rcall _Insert_Adc_ISR_Code
006A .dbline -2
006A L6:
006A 00D0 rcall pop_lset
006C .dbline 0 ; func end
006C 1895 reti
006E .dbend
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?