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

📄 no.s

📁 ICC编译绝对可用M16的HD7279驱动测试程序
💻 S
📖 第 1 页 / 共 2 页
字号:
; //********************************************* 
; //      译码方式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 + -