📄 no.s
字号:
; //*********************************************
; // 译码方式0及左移指令测试
; //*********************************************
; for (j=0;j<16;j++)
clr R2
sts _j,R2
xjmp L79
L76:
.dbline 203
.dbline 204
ldi R16,161
xcall _send_byte
.dbline 205
lds R18,_j
ldi R16,128
xcall _write7279
.dbline 206
ldi R16,50
ldi R17,0
xcall _dely_ms
.dbline 207
L77:
.dbline 202
lds R24,_j
subi R24,255 ; addi 1
sts _j,R24
L79:
.dbline 202
lds R24,_j
cpi R24,16
brlo L76
.dbline 208
; {
; send_byte(RTL_UNCYL); // 不循环左移指令
; write7279(DECODE0,j); // 译码方式0指令,显示在第1位
; dely_ms(50);
; }
; dely_ms(150);
ldi R16,150
ldi R17,0
xcall _dely_ms
.dbline 209
; send_byte(CMD_RESET);
ldi R16,164
xcall _send_byte
.dbline 214
;
; //*********************************************
; // 译码方式1及右移指令测试
; //*********************************************
; for (j=0;j<16;j++)
clr R2
sts _j,R2
xjmp L83
L80:
.dbline 215
.dbline 216
ldi R16,160
xcall _send_byte
.dbline 217
lds R18,_j
ldi R16,207
xcall _write7279
.dbline 218
ldi R16,50
ldi R17,0
xcall _dely_ms
.dbline 219
L81:
.dbline 214
lds R24,_j
subi R24,255 ; addi 1
sts _j,R24
L83:
.dbline 214
lds R24,_j
cpi R24,16
brlo L80
.dbline 220
; {
; send_byte(RTR_UNCYL); // 不循环左移指令
; write7279(DECODE1+7,j); // 译码方式0指令,显示在第8位
; dely_ms(50);
; }
; dely_ms(150);
ldi R16,150
ldi R17,0
xcall _dely_ms
.dbline 225
;
; //*********************************************
; // 消隐指令测试
; //*********************************************
; k=0xff;
ldi R24,255
sts _k,R24
.dbline 226
; for (j=0;j<6;j++)
clr R2
sts _j,R2
xjmp L87
L84:
.dbline 227
.dbline 228
lds R2,_k
lsr R2
sts _k,R2
.dbline 229
mov R18,R2
ldi R16,152
xcall _write7279
.dbline 230
ldi R16,100
ldi R17,0
xcall _dely_ms
.dbline 231
L85:
.dbline 226
lds R24,_j
subi R24,255 ; addi 1
sts _j,R24
L87:
.dbline 226
lds R24,_j
cpi R24,6
brlo L84
.dbline 232
; {
; k=k/2;
; write7279(ACTCTL,k); // 每隔一秒钟增加一个消隐位
; dely_ms(100);
; }
; write7279(ACTCTL,0xff); // 恢复8位显示
ldi R18,255
ldi R16,152
xcall _write7279
.dbline 233
; dely_ms(100);
ldi R16,100
ldi R17,0
xcall _dely_ms
.dbline 234
; send_byte(CMD_RESET); // 清除显示
ldi R16,164
xcall _send_byte
.dbline 239
;
; //**********************************************
; // 段点亮指令和段关闭指令
; //**********************************************
; for (j=0;j<64;j++)
clr R2
sts _j,R2
xjmp L91
L88:
.dbline 240
.dbline 241
lds R18,_j
ldi R16,224
xcall _write7279
.dbline 242
lds R18,_j
subi R18,1
ldi R16,192
xcall _write7279
.dbline 243
ldi R16,20
ldi R17,0
xcall _dely_ms
.dbline 244
L89:
.dbline 239
lds R24,_j
subi R24,255 ; addi 1
sts _j,R24
L91:
.dbline 239
lds R24,_j
cpi R24,64
brlo L88
.dbline 245
L4:
.dbline 83
xjmp L3
X0:
.dbline 246
; {
; write7279(SEGON,j); // 将64个显示段逐个点亮
; write7279(SEGOFF,j-1); // 同时将前一个显示段关闭
; dely_ms(20);
; }
; }
; return 0;
clr R16
clr R17
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e write7279 _write7279 fV
; dta -> R20
; cmd -> R22
.even
_write7279::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 250
; }
;
; void write7279(unsigned char cmd, unsigned char dta)
; {
.dbline 251
; send_byte (cmd);
mov R16,R22
xcall _send_byte
.dbline 252
; send_byte (dta);
mov R16,R20
xcall _send_byte
.dbline -2
.dbline 253
; }
L92:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r dta 20 c
.dbsym r cmd 22 c
.dbend
.dbfunc e read7279 _read7279 fc
; command -> R20
.even
_read7279::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 256
;
; unsigned char read7279(unsigned char command)
; {
.dbline 257
; send_byte(command);
mov R16,R20
xcall _send_byte
.dbline 258
; return(receive_byte());
xcall _receive_byte
.dbline -2
L93:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r command 20 c
.dbend
.dbfunc e send_byte _send_byte fV
; i -> R20
; out_byte -> R22
.even
_send_byte::
xcall push_gset2
mov R22,R16
.dbline -1
.dbline 262
; }
;
; void send_byte( unsigned char out_byte)
; {
.dbline 264
; unsigned char i;
; HD7279_CS_L;
cbi 0x18,2
.dbline 265
; long_delay();
xcall _long_delay
.dbline 266
; for (i=0;i<8;i++)
clr R20
xjmp L98
L95:
.dbline 267
; {
.dbline 268
; if (out_byte&0x80)
sbrs R22,7
rjmp L99
.dbline 269
; {
.dbline 270
; HD7279_DATA_H;
sbi 0x18,0
.dbline 271
; }
xjmp L100
L99:
.dbline 273
; else
; {
.dbline 274
; HD7279_DATA_L;
cbi 0x18,0
.dbline 275
; }
L100:
.dbline 276
sbi 0x18,1
.dbline 277
xcall _short_delay
.dbline 278
cbi 0x18,1
.dbline 279
xcall _short_delay
.dbline 280
ldi R24,2
mul R24,R22
mov R22,R0
.dbline 281
L96:
.dbline 266
inc R20
L98:
.dbline 266
cpi R20,8
brlo L95
.dbline 282
; HD7279_CLK_H;
; short_delay();
; HD7279_CLK_L;
; short_delay();
; out_byte=out_byte*2;
; }
; HD7279_DATA_L;
cbi 0x18,0
.dbline -2
.dbline 283
; }
L94:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r out_byte 22 c
.dbend
.dbfunc e receive_byte _receive_byte fc
; i -> R20
; in_byte -> R22
.even
_receive_byte::
xcall push_gset2
.dbline -1
.dbline 287
;
;
; unsigned char receive_byte(void)
; {
.dbline 289
; unsigned char i, in_byte;
; HD7279_DDR_L;
cbi 0x17,0
.dbline 290
; HD7279_DATA_H;
sbi 0x18,0
.dbline 291
; long_delay();
xcall _long_delay
.dbline 292
; for (i=0;i<8;i++)
clr R20
xjmp L105
L102:
.dbline 293
; {
.dbline 294
; HD7279_CLK_H;
sbi 0x18,1
.dbline 295
; short_delay();
xcall _short_delay
.dbline 296
; in_byte=in_byte*2;
ldi R24,2
mul R24,R22
mov R22,R0
.dbline 298
;
; if (HD7279_DATA&1==1)
sbis 0x16,0
rjmp L106
.dbline 299
; {
.dbline 300
; in_byte=in_byte|0x01;
ori R22,1
.dbline 301
; }
L106:
.dbline 302
cbi 0x18,1
.dbline 303
xcall _short_delay
.dbline 304
L103:
.dbline 292
inc R20
L105:
.dbline 292
cpi R20,8
brlo L102
.dbline 305
; HD7279_CLK_L;
; short_delay();
; }
; HD7279_DATA_L;
cbi 0x18,0
.dbline 306
; HD7279_DDR_H;
sbi 0x17,0
.dbline 307
; return (in_byte);
mov R16,R22
.dbline -2
L101:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r in_byte 22 c
.dbend
.dbfunc e long_delay _long_delay fV
; i -> R16
.even
_long_delay::
.dbline -1
.dbline 313
; }
;
;
;
; void long_delay(void)
; {
.dbline 315
clr R16
xjmp L112
L109:
.dbline 315
L110:
.dbline 315
inc R16
L112:
.dbline 315
; unsigned char i;
; for (i=0;i<0x30;i++);
cpi R16,48
brlo L109
.dbline -2
.dbline 316
; }
L108:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e short_delay _short_delay fV
; i -> R16
.even
_short_delay::
.dbline -1
.dbline 319
;
; void short_delay(void)
; {
.dbline 321
clr R16
xjmp L117
L114:
.dbline 321
L115:
.dbline 321
inc R16
L117:
.dbline 321
; unsigned char i;
; for (i=0;i<8;i++);
cpi R16,8
brlo L114
.dbline -2
.dbline 322
; }
L113:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.area vector(rom, abs)
.org 4
jmp _int0_isr
.area text(rom, con, rel)
.dbfile D:\软件\hd7279disp\no.c
.dbfunc e int0_isr _int0_isr fV
; dd -> R20
.even
_int0_isr::
xcall push_lset
xcall push_gset1
.dbline -1
.dbline 325
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {unsigned char dd;
.dbline 326
; dd=receive_byte();
xcall _receive_byte
mov R20,R16
.dbline 327
; write7279(DECODE1+1,dd/16); // 在第2位显示键码高8位
mov R18,R20
swap R18
andi R18,#0x0F
ldi R16,201
xcall _write7279
.dbline 328
; write7279(DECODE1,dd&0x0f); // 在第1位显示键码低8位
mov R18,R20
andi R18,15
ldi R16,200
xcall _write7279
.dbline -2
.dbline 329
; }
L118:
xcall pop_gset1
xcall pop_lset
.dbline 0 ; func end
reti
.dbsym r dd 20 c
.dbend
.dbfunc e delay_us _delay_us fV
; time -> R16,R17
.even
_delay_us::
.dbline -1
.dbline 333
; // ************************* 延时 n*ms *************************
;
; void delay_us(int time) //微秒级延时
; {
L120:
.dbline 335
; do
; time--;
subi R16,1
sbci R17,0
L121:
.dbline 336
; while(time>1);
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L120
.dbline -2
.dbline 337
; }
L119:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e dely_ms _dely_ms fV
; time -> R20,R21
.even
_dely_ms::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 340
;
; void dely_ms(unsigned int time)
; {
xjmp L125
L124:
.dbline 342
.dbline 343
ldi R16,1000
ldi R17,3
xcall _delay_us
.dbline 344
subi R20,1
sbci R21,0
.dbline 345
L125:
.dbline 341
; while(time!=0)
cpi R20,0
cpc R20,R21
brne L124
X3:
.dbline -2
.dbline 346
; {
; delay_us(1000);
; time--;
; }
; }
L123:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.area bss(ram, con, rel)
.dbfile D:\软件\hd7279disp\no.c
_wait_cnter::
.blkb 4
.dbsym e wait_cnter _wait_cnter l
_tmr::
.blkb 2
.dbsym e tmr _tmr i
_key_number::
.blkb 1
.dbsym e key_number _key_number c
_k::
.blkb 1
.dbsym e k _k c
_j::
.blkb 1
.dbsym e j _j c
_digit::
.blkb 8
.dbsym e digit _digit A[8:8]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -