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

📄 sg5.sdi

📁 基于PROTERUS仿真的AVR例子
💻 SDI
字号:
,,,.device AT90S8535
,,,.equ    sph     =$3E
,,,.equ    spl     =$3D
,,,.equ  PORTB   =$18            
,,,.equ  DDRB    =$17            
,,,.equ    PINB    =$16
,,,.equ  PORTC   =$15            
,,,.equ  DDRC    =$14            
,,,.equ    PINC    =$13
,,,.equ  PORTD   =$12            
,,,.equ  DDRD    =$11            
,,,.equ    PIND    =$10
,,,.equ    TCCR0   =$33
,,,.equ    TCNT0   =$32
,,,.def  ZH      =r31
,,,.def  ZL      =r30
,,,         
000000,C000,,       rjmp    main
000002,E002,main,main:  ldi     r16,$02                 ;栈指针置初值
000004,BF0E,,       out     sph,r16
000006,E50F,,       ldi     r16,$5f
000008,BF0D,,       out     spl,r16
00000A,E007,,       ldi     r16,$07                 ;上升沿计数
00000C,BF03,,       out     TCCR0,r16
00000E,E000,,       ldi     r16,0                   ;T/C0置初值0
000010,BF02,,       out     TCNT0,r16
000012,E000,,       ldi     r16,$00
000014,BB07,,       out     DDRB,r16
000016,EF0F,,       ldi     r16,$ff                 ;PC口作输出
000018,BB04,,       out     DDRC,r16
00001A,BB01,,       out     DDRD,r16
00001C,BB08,,       out     PORTB,r16
00001E,B702,loop,loop:  in      r16,TCNT0
000020,D005,,       rcall   btd                     ;调二转十子程序
000022,2F62,,       mov     r22,r18                 ;将BCD码送r18~r22
000024,2F51,,       mov     r21,r17
000026,2F40,,       mov     r20,r16
000028,D00C,,       rcall   smiao                   ;调动态扫描子程序
00002A,CFF9,,       rjmp    loop
,,,      
00002C,EF2F,btd,btd:   ser     r18                     ;r18先送-1
00002E,9523,btd_1,btd_1: inc     r18
000030,5604,,       subi    r16,100                 ;(r16)-100
000032,F7E8,,       brcc    btd_1                   ;够减则返回btd_1
000034,590C,,       subi    r16,-100                ;不够减+100,恢复余数
000036,EF1F,,       ser     r17                     ;r17先送-1
000038,9513,btd_2,btd_2: inc     r17                     ;r17增1
00003A,500A,,       subi    r16,10                  ;(r16)-10
00003C,F7E8,,       brcc    btd_2                   ;够减则返回btd_2
00003E,5F06,,       subi    r16,-10                 ;不够减+10,恢复余数
000040,9508,,       ret
,,,         
000042,EF0E,smiao,smiao: ldi     r16,$fe                 ;送个位位线
000044,BB02,,       out     PORTD,r16
000046,2F74,,       mov     r23,r20                 ;将个位的BCD码送r23
000048,D00C,,       rcall   cqb                     ;查7段码,送B口输出
00004A,D011,,       rcall   t1ms                    ;延时1ms
00004C,EF0D,,       ldi     r16,$fd                 ;送十位位线
00004E,BB02,,       out     PORTD,r16
000050,2F75,,       mov     r23,r21                 ;将十位的BCD码送r23
000052,D007,,       rcall   cqb                     ;查7段码,送B口输出
000054,D00C,,       rcall   t1ms                    ;延时1ms
000056,EF0B,,       ldi     r16,$fb                 ;送百位位线
000058,BB02,,       out     PORTD,r16
00005A,2F76,,       mov     r23,r22                 ;将百位的BCD码送r23
00005C,D002,,       rcall   cqb                     ;查7段码,送B口输出
00005E,D007,,       rcall   t1ms                    ;延时1ms
000060,9508,,       ret
,,,      
000062,E0F0,cqb,cqb:   ldi     ZH,high(tab*2)          ;7段码的首址给Z
000064,E8E2,,       ldi     ZL,low(tab*2)
000066,0FE7,,       add     ZL,r23                  ;首地址+偏移量
000068,95C8,,       lpm                             ;查表送C口输出
00006A,BA05,,       out     PORTC,r0
00006C,9508,,       ret
,,,      
00006E,E685,t1ms,t1ms:  ldi     r24,101                 ;延时1ms子程序
000070,938F,,       push    r24
000072,938F,del2,del2:  push    r24
000074,958A,del3,del3:  dec     r24
000076,F7F1,,       brne    del3
000078,918F,,       pop     r24
00007A,958A,,       dec     r24
00007C,F7D1,,       brne    del2
00007E,918F,,       pop     r24
000080,9508,,       ret
,,,         
000082,0000,,       .db     $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f000041 063f
,,b,b
,,,6
,,d,d
,,f,f
,,,

⌨️ 快捷键说明

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