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

📄 second.lis

📁 关于单片机的哈吉阿 吉阿 将阿吉阿吉阿吉阿吉阿吉阿
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module second.c
                        .area lit(rom, con, rel)
 0000           _seg_table::
 0000 3031              .byte 48,49
 0002 3233              .byte 50,51
 0004 3435              .byte 52,53
 0006 3637              .byte 54,55
 0008 3839              .byte 56,57
 000A                   .dbfile D:\mega16学习板资料\例程\m16\1602/1602.h
 000A                   .dbsym e seg_table _seg_table A[10:10]kc
                        .area text(rom, con, rel)
 0000                   .dbfile D:\mega16学习板资料\例程\m16\1602/1602.h
 0000                   .dbfunc e lcd_init _lcd_init fV
                        .even
 0000           _lcd_init::
 0000                   .dbline -1
 0000                   .dbline 37
 0000           ; //ICC-AVR application builder : 2006-12-22 20:34:51
 0000           ; // Target : M8
 0000           ; // Crystal: 6.0000Mhz
 0000           ; //1602占用了PB口作为数据口,PA6,PA5,PA4分别是RS,WR,E
 0000           ; //按纽采用循环检测方式工作,不采用中断方式.
 0000           ; 
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "1602.h"
 0000           ; unsigned char led_buff[]="qian ru shi LM! ";
 0000           ; unsigned char str1[]="www.ourembed.com";
 0000           ; 
 0000           ; 
 0000           ; void timer1_init(void);
 0000           ; void init_devices(void);
 0000           ; unsigned char KeyPress(void);
 0000           ; void delay_ms(unsigned int time);
 0000           ; void StartCount(void);
 0000           ; void StopCount(void);
 0000           ; void Clear(void);
 0000           ; unsigned int hour=0,minute=0,second=0,ms=0;
 0000           ; unsigned char c_next=0,choose=0;
 0000           ; 
 0000           ; void port_init(void) 
 0000           ; {
 0000           ;  PORTB = 0xFF;
 0000           ;  DDRB  = 0xFF;
 0000           ;  PORTC = 0xFF; //m103 output only
 0000           ;  DDRC  = 0xFF;
 0000           ;  PORTD = 0xFF;
 0000           ;  DDRD  = 0xFF;
 0000           ; }
 0000           ; 
 0000           ; //TIMER1 initialisation - prescale:8
 0000           ; // WGM: 0) Normal, TOP=0xFFFF
 0000           ; // desired value: 1mSec
 0000                   .dbline 38
 0000           ; // actual value:  1.000mSec (0.0%)
 0000 04E6              ldi R16,100
 0002 10E0              ldi R17,0
 0004 2BD0              xcall _delay_nms
 0006                   .dbline 39
 0006           ; void timer1_init(void)
 0006 2227              clr R18
 0008 08E3              ldi R16,56
 000A 37D0              xcall _lcd_write_command
 000C                   .dbline 40
 000C           ; {
 000C 04E1              ldi R16,20
 000E 10E0              ldi R17,0
 0010 25D0              xcall _delay_nms
 0012                   .dbline 41
 0012           ;  TCCR1B = 0x00; //stop
 0012 2227              clr R18
 0014 08E3              ldi R16,56
 0016 31D0              xcall _lcd_write_command
 0018                   .dbline 42
 0018           ;  TCNT1H = 0x63; //setup
 0018 04E1              ldi R16,20
 001A 10E0              ldi R17,0
 001C 1FD0              xcall _delay_nms
 001E                   .dbline 43
 001E           ;  TCNT1L = 0xc0;
 001E 2227              clr R18
 0020 08E3              ldi R16,56
 0022 2BD0              xcall _lcd_write_command
 0024                   .dbline 44
 0024           ;  OCR1AH = 0x17;
 0024 04E1              ldi R16,20
 0026 10E0              ldi R17,0
 0028 19D0              xcall _delay_nms
 002A                   .dbline 46
 002A           ;  OCR1AL = 0x70;
 002A           ;  OCR1BH = 0x17;
 002A 21E0              ldi R18,1
 002C 08E3              ldi R16,56
 002E 25D0              xcall _lcd_write_command
 0030                   .dbline 47
 0030           ;  OCR1BL = 0x70;
 0030 21E0              ldi R18,1
 0032 08E0              ldi R16,8
 0034 22D0              xcall _lcd_write_command
 0036                   .dbline 48
 0036           ;  ICR1H  = 0x17;
 0036 21E0              ldi R18,1
 0038 01E0              ldi R16,1
 003A 1FD0              xcall _lcd_write_command
 003C                   .dbline 49
 003C           ;  ICR1L  = 0x70;
 003C 21E0              ldi R18,1
 003E 06E0              ldi R16,6
 0040 1CD0              xcall _lcd_write_command
 0042                   .dbline 50
 0042           ;  TCCR1A = 0x00;
 0042 21E0              ldi R18,1
 0044 0CE0              ldi R16,12
 0046                   .dbline -2
 0046                   .dbline 51
 0046           ;  TCCR1B = 0x00; //start Timer
 0046           L1:
 0046                   .dbline 0 ; func end
 0046 19C0              xjmp _lcd_write_command
 0048                   .dbend
 0048                   .dbfunc e delay_1ms _delay_1ms fV
 0048           ;              i -> R16,R17
                        .even
 0048           _delay_1ms::
 0048                   .dbline -1
 0048                   .dbline 56
 0048           ; }
 0048           ; 
 0048           ; #pragma interrupt_handler timer1_ovf_isr:9
 0048           ; void timer1_ovf_isr(void)
 0048           ; {
 0048                   .dbline 58
 0048 0027              clr R16
 004A 1127              clr R17
 004C 02C0              xjmp L6
 004E           L3:
 004E                   .dbline 58
 004E           L4:
 004E                   .dbline 58
 004E 0F5F              subi R16,255  ; offset = 1
 0050 1F4F              sbci R17,255
 0052           L6:
 0052                   .dbline 58
 0052           ;  //TIMER1 has overflowed
 0052           ;  TCNT1H = 0x63; //reload counter high value
 0052 0034              cpi R16,64
 0054 E6E0              ldi R30,6
 0056 1E07              cpc R17,R30
 0058 D0F3              brlo L3
 005A                   .dbline -2
 005A                   .dbline 59
 005A           ;  TCNT1L = 0xc0; //reload counter low value
 005A           L2:
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbsym r i 16 i
 005C                   .dbend
 005C                   .dbfunc e delay_nms _delay_nms fV
 005C           ;              i -> R20,R21
 005C           ;              n -> R22,R23
                        .even
 005C           _delay_nms::
 005C 0E940000          xcall push_gset2
 0060 B801              movw R22,R16
 0062                   .dbline -1
 0062                   .dbline 63
 0062           ; }
 0062           ; 
 0062           ; //call this routine to initialise all peripherals
 0062           ; void init_devices(void)
 0062                   .dbline 65
 0062 4427              clr R20
 0064 5527              clr R21
 0066 03C0              xjmp L11
 0068           L8:
 0068                   .dbline 65
 0068 EFDF              xcall _delay_1ms
 006A           L9:
 006A                   .dbline 65
 006A 4F5F              subi R20,255  ; offset = 1
 006C 5F4F              sbci R21,255
 006E           L11:
 006E                   .dbline 65
 006E           ; {
 006E           ;  //stop errant interrupts until set up
 006E 4617              cp R20,R22
 0070 5707              cpc R21,R23
 0072 D0F3              brlo L8
 0074                   .dbline -2
 0074                   .dbline 66
 0074           ;  CLI(); //disable all interrupts
 0074           L7:
 0074 0E940000          xcall pop_gset2
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbsym r i 20 i
 007A                   .dbsym r n 22 i
 007A                   .dbend
 007A                   .dbfunc e lcd_write_command _lcd_write_command fV
 007A           ;        wait_en -> R22
 007A           ;        command -> R20
                        .even
 007A           _lcd_write_command::
 007A 0E940000          xcall push_gset2
 007E 622F              mov R22,R18
 0080 402F              mov R20,R16
 0082                   .dbline -1
 0082                   .dbline 70
 0082           ;  port_init();
 0082           ;  timer1_init();
 0082           ; 
 0082           ;  MCUCR = 0x0A;
 0082                   .dbline 71
 0082           ;  GICR  = 0x00;
 0082 6623              tst R22
 0084 09F0              breq L13
 0086                   .dbline 71
 0086 45D0              xcall _wait_enable
 0088           L13:
 0088                   .dbline 72
 0088           ;  TIMSK = 0x04; //timer interrupt sources
 0088 DE98              cbi 0x1b,6
 008A                   .dbline 73
 008A           ;  SEI(); //re-enable interrupts
 008A DD98              cbi 0x1b,5
 008C                   .dbline 74
 008C           ;  //all peripherals are now initialised
 008C DC98              cbi 0x1b,4
 008E                   .dbline 75
 008E           ; }
 008E 0000              nop
 0090                   .dbline 76
 0090           ; 
 0090 DC9A              sbi 0x1b,4
 0092                   .dbline 77
 0092           ; //
 0092 48BB              out 0x18,R20
 0094                   .dbline 78
 0094           ; void main(void)
 0094 DC98              cbi 0x1b,4
 0096                   .dbline -2
 0096                   .dbline 79
 0096           ; {
 0096           L12:
 0096 0E940000          xcall pop_gset2
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r wait_en 22 c
 009C                   .dbsym r command 20 c
 009C                   .dbend
 009C                   .dbfunc e display_a_char _display_a_char fV
 009C           ;   position_tem -> R22
 009C           ;      char_data -> R20
 009C           ;       position -> R10
                        .even
 009C           _display_a_char::
 009C 0E940000          xcall push_gset3
 00A0 422F              mov R20,R18
 00A2 A02E              mov R10,R16
 00A4                   .dbline -1
 00A4                   .dbline 84
 00A4           ;  init_devices();
 00A4           ;  lcd_init();
 00A4           ;  //insert your functional code here...
 00A4           ;  display_a_string(0,led_buff);
 00A4           ;  display_a_string(1,str1);
 00A4                   .dbline 86
 00A4           ;  
 00A4           ; 
 00A4 8A2D              mov R24,R10
 00A6 8031              cpi R24,16
 00A8 18F0              brlo L16
 00AA                   .dbline 87
 00AA           ; }
 00AA 682F              mov R22,R24
 00AC 6055              subi R22,80    ; addi 176
 00AE 02C0              xjmp L17
 00B0           L16:
 00B0                   .dbline 89
 00B0           ; 
 00B0           ; //延时
 00B0 6A2D              mov R22,R10
 00B2 6058              subi R22,128    ; addi 128
 00B4           L17:
 00B4                   .dbline 90
 00B4           ; void delay_ms(unsigned int time)
 00B4 21E0              ldi R18,1
 00B6 062F              mov R16,R22
 00B8 E0DF              xcall _lcd_write_command
 00BA                   .dbline 91
 00BA           ; { unsigned int i,j;
 00BA 042F              mov R16,R20
 00BC 1CD0              xcall _lcd_write_data
 00BE                   .dbline -2
 00BE                   .dbline 92
 00BE           ;   
 00BE           L15:
 00BE 0E940000          xcall pop_gset3
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbsym r position_tem 22 c
 00C4                   .dbsym r char_data 20 c
 00C4                   .dbsym r position 10 c
 00C4                   .dbend
 00C4                   .dbfunc e display_a_string _display_a_string fV
 00C4           ;        col_tem -> R20
 00C4           ;              i -> R22
 00C4           ;            ptr -> R10,R11
 00C4           ;            col -> R20
                        .even
 00C4           _display_a_string::
 00C4 0E940000          xcall push_gset3
 00C8 5901              movw R10,R18
 00CA 402F              mov R20,R16
 00CC                   .dbline -1
 00CC                   .dbline 97
 00CC           ;   for(j=0;j<time;j++)
 00CC           ;   { for(i=0;i<1000;i++)
 00CC           ;      time=time;
 00CC           ;   }
 00CC           ; }
 00CC                   .dbline 99
 00CC           ; 
 00CC           ; //键盘
 00CC 842F              mov R24,R20
 00CE 8F70              andi R24,#0x0F
 00D0 8295              swap R24
 00D2 482F              mov R20,R24
 00D4                   .dbline 100
 00D4           ; 
 00D4 6627              clr R22
 00D6 0AC0              xjmp L22
 00D8           L19:
 00D8                   .dbline 101
 00D8 E62F              mov R30,R22
 00DA FF27              clr R31
 00DC EA0D              add R30,R10
 00DE FB1D              adc R31,R11
 00E0 2081              ldd R18,z+0
 00E2 242E              mov R2,R20
 00E4 4F5F              subi R20,255    ; addi 1
 00E6 022D              mov R16,R2
 00E8 D9DF              xcall _display_a_char
 00EA           L20:
 00EA                   .dbline 100
 00EA 6395              inc R22
 00EC           L22:
 00EC                   .dbline 100
 00EC 6031              cpi R22,16
 00EE A0F3              brlo L19
 00F0                   .dbline -2
 00F0                   .dbline 102
 00F0           ; 
 00F0           ; 
 00F0           L18:
 00F0 0E940000          xcall pop_gset3
 00F4                   .dbline 0 ; func end

⌨️ 快捷键说明

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