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

📄 zh1.sdi

📁 基于PROTERUS仿真的AVR例子
💻 SDI
字号:
,,,.device AT90S8535
,,,.equ    sph     =$3E
,,,.equ    spl     =$3D
,,,.equ    TIMSK   =$39
,,,.equ    OCR1AH  =$2B
,,,.equ    OCR1AL  =$2A
,,,.equ    TCCR1B  =$2E
,,,.equ    SREG  =$3F
,,,.equ    TCNT1H        =$2D
,,,.equ    TCNT1L        =$2C
,,,.equ  PORTA   =$1B            
,,,.equ  DDRA    =$1A            
,,,.equ    PINA    =$19
,,,.equ  PORTC   =$15            
,,,.equ  DDRC    =$14            
,,,.equ    PINC    =$13
,,,.equ  PORTD   =$12            
,,,.equ  DDRD    =$11            
,,,.equ    PIND    =$10
,,,.def  ZL      =r30
,,,.def  ZH      =r31
,,,         
,,,      .org    $0000
000000,C01E,,       rjmp    main
,,,      .org    $006
00000C,C085,,       rjmp    t1_cp
,,,      
00000E,0000,,       .db     $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f,$77,$7c,$39,$5e,$79,$71
,,f,f
,,b,b
,,,6
,,d,d
,,f,f
,,,7
,,,9
,,,9
00001E,0000,,       .db     $05,$eb,$05,$99,$04,$fc,$04,$70,$03,$f4,$03,$bc,$03,$54,$02,$f7,$02,$cc,$02,$7e,$02,$38,$01,$fa,$01,$df,$01,$aa,$01,$7b,$01,$66
,,,5
,,,5
,,,4
,,,4
,,,3
,,,3
,,,3
,,,2
,,,2
,,,2
,,,2
,,,1
,,,1
,,,1
,,,1
,,,1
,,,         
00003E,E002,main,main:  ldi     r16,$02                 ;栈指针置初值
000040,BF0E,,       out     sph,r16
000042,E50F,,       ldi     r16,$5f
000044,BF0D,,       out     spl,r16
000046,EF0F,,       ldi     r16,$ff                 ;PA口定义为输出口
000048,BB0A,,       out     DDRA,r16
00004A,E001,,       ldi     r16,$01                 ;PD0口定义为输出口
00004C,BB01,,       out     DDRD,r16
00004E,E100,,       ldi     r16,$10                 ;允许T1比较匹配A中断
000050,BF09,,       out     TIMSK,r16
000052,2700,,       clr     r16                     ;置TCNT1初值为0
000054,BD0C,,       out     TCNT1L,r16
000056,BD0D,,       out     TCNT1H,r16
000058,E00A,,       ldi     r16,$0a                 ;设置T/C1频率
00005A,BD0E,,       out     TCCR1B,r16
,,,      
00005C,EF00,lscan,lscan: ldi     r16,$f0
00005E,BB04,,       out     DDRC,r16
000060,BB05,,       out     PORTC,r16
000062,B303,l1,l1:    in      r16,PINC
000064,3F01,,       cpi     r16,$f1
000066,F431,,       brne    l2
000068,D05D,,       rcall   t1ms
00006A,B303,,       in      r16,PINC
00006C,3F01,,       cpi     r16,$f1
00006E,F411,,       brne    l2
000070,E010,,       ldi     r17,$00
000072,C014,,       rjmp    rscan
000074,3F02,l2,l2:    cpi     r16,$f2
000076,F429,,       brne    l3
000078,D055,,       rcall   t1ms
00007A,3F02,,       cpi     r16,$f2
00007C,F411,,       brne    l3
00007E,E011,,       ldi     r17,$01
000080,C00D,,       rjmp    rscan
000082,3F04,l3,l3:    cpi     r16,$f4
000084,F429,,       brne    l4
000086,D04E,,       rcall   t1ms
000088,3F04,,       cpi     r16,$f4
00008A,F411,,       brne    l4
00008C,E012,,       ldi     r17,$02
00008E,C006,,       rjmp    rscan
000090,3F08,l4,l4:    cpi     r16,$f8
000092,F721,,       brne    lscan
000094,D047,,       rcall   t1ms
000096,3F08,,       cpi     r16,$f8
000098,F709,,       brne    lscan
00009A,E013,,       ldi     r17,$03
00009C,E00F,rscan,rscan: ldi     r16,$0f
00009E,BB04,,       out     DDRC,r16
0000A0,BB05,,       out     PORTC,r16
0000A2,B303,c1,c1:    in      r16,PINC
0000A4,3E00,,       cpi     r16,$e0
0000A6,F411,,       brne    c2
0000A8,E020,,       ldi     r18,$00
0000AA,C00B,,       rjmp    calcu
0000AC,3D00,c2,c2:    cpi     r16,$d0
0000AE,F411,,       brne    c3
0000B0,E021,,       ldi     r18,$01
0000B2,C007,,       rjmp    calcu
0000B4,3B00,c3,c3:    cpi     r16,$b0
0000B6,F411,,       brne    c4
0000B8,E022,,       ldi     r18,$02
0000BA,C003,,       rjmp    calcu
0000BC,3700,c4,c4:    cpi     r16,$70
0000BE,F671,,       brne    lscan
0000C0,E023,,       ldi     r18,$03
,,,         
0000C2,3010,calcu,calcu: cpi     r17,$00                 ;计算键号
0000C4,F411,,       brne    calcu1
0000C6,E010,,       ldi     r17,$00
0000C8,C009,,       rjmp    cb
0000CA,3011,calcu1,calcu1:        cpi     r17,$01
0000CC,F411,,       brne    calcu2
0000CE,E014,,       ldi     r17,$04
0000D0,C005,,       rjmp    cb
0000D2,3012,calcu2,calcu2:        cpi     r17,$02
0000D4,F411,,       brne    calcu3
0000D6,E018,,       ldi     r17,$08
0000D8,C001,,       rjmp    cb
0000DA,E01C,calcu3,calcu3:        ldi     r17,$0C
0000DC,0F12,cb,cb:    add     r17,r18
0000DE,2F41,,       mov     r20,r17
0000E0,0F44,,       lsl     r20
0000E2,E0F0,,       ldi     ZH,high(tab2*2)
0000E4,E1EE,,       ldi     ZL,low(tab2*2)
0000E6,0FE4,,       add     ZL,r20
0000E8,95C8,,       lpm
0000EA,BC0B,,       out     OCR1AH,r0
0000EC,95E3,,       inc     ZL
0000EE,95C8,,       lpm
0000F0,BC0A,,       out     OCR1AL,r0
0000F2,9478,,       sei
0000F4,D00B,,       rcall   cqb
0000F6,EF00,w0,w0:    ldi     r16,$f0                 ;等待按键释放
0000F8,BB05,,       out     PORTC,r16
0000FA,B303,w1,w1:    in      r16,PINC
0000FC,7F0F,,       andi    r16,$ff
0000FE,3F00,,       cpi     r16,$f0
000100,F421,,       brne    w2
000102,94F8,,       cli
000104,E000,,       ldi     r16,$00
000106,BB0B,,       out     PORTA,r16
000108,CFA9,,       rjmp    lscan
00010A,CFF5,w2,w2:    rjmp    w0
,,,         
00010C,E0F0,cqb,cqb:   ldi     ZH,high(tab1*2)         ;7段码的首址给Z
00010E,E0EE,,       ldi     ZL,low(tab1*2)
000110,0FE1,,       add     ZL,r17                  ;首地址+偏移量
000112,95C8,,       lpm                             ;查表送B口输出
000114,BA0B,,       out     PORTA,r0
000116,9508,,       ret
,,,      
000118,B61F,t1_cp,t1_cp: in      r1,sreg                 ;保护标志
00011A,B222,,       in      r2,PORTD                ;PD口取反
00011C,9420,,       com     r2
00011E,BA22,,       out     PORTD,r2
000120,BE1F,,       out     sreg,r1                 ;标志恢复
000122,9518,,       reti
,,,         
000124,E086,t1ms,t1ms:  ldi     r24,6                   ;延时子程序
000126,938F,,       push    r24
000128,938F,del2,del2:  push    r24
00012A,958A,del3,del3:  dec     r24
00012C,F7F1,,       brne    del3
00012E,918F,,       pop     r24
000130,958A,,       dec     r24
000132,F7D1,,       brne    del2
000134,918F,,       pop     r24
000136,9508,,       ret

⌨️ 快捷键说明

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