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

📄 test6.lst

📁 用VHDL语言实现的pic16f84
💻 LST
字号:
CCS PCW C Compiler, Version 2.636, 5783

               Filename: D:\PIC_CO~1\PICC\SRC\TEST6.LST

               ROM used: 229 (22%)
                         229 (22%) including unused fragments
               RAM used: 15 (42%) at main() level
                         26 (72%) worst case
               Stack:    1 locations

0000:  MOVLW  00
0001:  MOVWF  0A
0002:  GOTO   04F
0003:  NOP
0004:  NOP
....................  // Test6 
.................... // 
.................... // This tests out the risc16f84 to see if it can perform calls to subroutines. 
.................... // It is supposed to print boxes of random colors and sizes to the LCD screen. 
.................... // Author: John Clayton 
.................... // Date  : 05/01/02 
....................  
.................... #device PIC16C84 
.................... #byte addr_lo = 0x05 
.................... #byte addr_hi = 0x06 
.................... #byte data = 0x08 
....................  
.................... // This functions plots a single pixel at coordinates (x,y) 
.................... // color should range from 0..7. 
.................... void plot(unsigned int x, unsigned int y, unsigned int color) 
.................... { 
.................... addr_hi = (y>>1) | 0x40; 
*
0017:  MOVF   23,W
0018:  MOVWF  0C
0019:  BCF    03,0
001A:  RRF    0C,F
001B:  MOVF   0C,W
001C:  IORLW  40
001D:  MOVWF  06
.................... addr_lo = x | (y<<7); 
001E:  MOVF   23,W
001F:  MOVWF  0C
0020:  SWAPF  0C,F
0021:  RLF    0C,F
0022:  RLF    0C,F
0023:  RLF    0C,F
0024:  MOVLW  80
0025:  ANDWF  0C,F
0026:  MOVF   0C,W
0027:  IORWF  22,W
0028:  MOVWF  05
.................... data = color; 
0029:  MOVF   24,W
002A:  MOVWF  08
.................... } 
....................  
.................... void fill_block(unsigned int x1, 
....................                 unsigned int y1, 
....................                 unsigned int x2, 
....................                 unsigned int y2, 
....................                 unsigned int color) 
.................... { 
.................... int i,j; 
....................  
.................... for (i=x1;i<x2;i++) 
*
0005:  MOVF   1B,W
0006:  MOVWF  20
0007:  MOVF   1D,W
0008:  SUBWF  20,W
0009:  BTFSC  03,0
000A:  GOTO   02F
....................   for (j=y1;j<y2;j++) 
000B:  MOVF   1C,W
000C:  MOVWF  21
000D:  MOVF   1E,W
000E:  SUBWF  21,W
000F:  BTFSC  03,0
0010:  GOTO   02D
....................     plot (i,j,color); 
0011:  MOVF   20,W
0012:  MOVWF  22
0013:  MOVF   21,W
0014:  MOVWF  23
0015:  MOVF   1F,W
0016:  MOVWF  24
*
002B:  INCF   21,F
002C:  GOTO   00D
002D:  INCF   20,F
002E:  GOTO   007
002F:  RETLW  00
.................... } 
....................  
.................... void show_leds(unsigned int value) 
.................... { 
.................... addr_hi = 0xff; 
*
0048:  MOVLW  FF
0049:  MOVWF  06
.................... addr_lo = 0x07; 
004A:  MOVLW  07
004B:  MOVWF  05
.................... data = value; 
004C:  MOVF   1B,W
004D:  MOVWF  08
004E:  GOTO   0E3
.................... } 
....................  
.................... int pn_sequence(unsigned int value) 
.................... // Takes a PN sequence value, and produces the next value... 
.................... { 
.................... return((value << 1) + (((value>>2) ^ (value>>7))&0x01)); 
*
0030:  MOVF   1B,W
0031:  MOVWF  1C
0032:  BCF    03,0
0033:  RLF    1C,F
0034:  MOVF   1B,W
0035:  MOVWF  1D
0036:  RRF    1D,F
0037:  RRF    1D,F
0038:  MOVLW  3F
0039:  ANDWF  1D,F
003A:  MOVF   1B,W
003B:  MOVWF  0C
003C:  SWAPF  0C,F
003D:  RRF    0C,F
003E:  RRF    0C,F
003F:  RRF    0C,F
0040:  MOVLW  01
0041:  ANDWF  0C,F
0042:  MOVF   0C,W
0043:  XORWF  1D,W
0044:  ANDLW  01
0045:  ADDWF  1C,W
0046:  MOVWF  0D
0047:  RETLW  00
.................... } 
....................  
.................... main() { 
.................... int rand; 
.................... int a, x1,x2,y1,y2,color,temp; 
.................... long b; 
*
004F:  CLRF   04
0050:  CLRF   03
....................  
.................... // Clear the screen 
....................   fill_block(0,0,128,96,0); 
0051:  CLRF   1B
0052:  CLRF   1C
0053:  MOVLW  80
0054:  MOVWF  1D
0055:  MOVLW  60
0056:  MOVWF  1E
0057:  CLRF   1F
0058:  CALL   005
....................  
.................... // Try to make a PN generator... 
.................... rand = 0xf0; 
0059:  MOVLW  F0
005A:  MOVWF  11
....................  
.................... while (1) { 
....................   rand = pn_sequence(rand); 
005B:  MOVF   11,W
005C:  MOVWF  1B
005D:  CALL   030
005E:  MOVF   0D,W
005F:  MOVWF  11
....................   x1 = rand; 
0060:  MOVF   11,W
0061:  MOVWF  13
....................   rand = pn_sequence(rand); 
0062:  MOVF   11,W
0063:  MOVWF  1B
0064:  CALL   030
0065:  MOVF   0D,W
0066:  MOVWF  11
....................   x2 = rand; 
0067:  MOVF   11,W
0068:  MOVWF  14
....................   rand = pn_sequence(rand); 
0069:  MOVF   11,W
006A:  MOVWF  1B
006B:  CALL   030
006C:  MOVF   0D,W
006D:  MOVWF  11
....................   y1 = rand; 
006E:  MOVF   11,W
006F:  MOVWF  15
....................   rand = pn_sequence(rand); 
0070:  MOVF   11,W
0071:  MOVWF  1B
0072:  CALL   030
0073:  MOVF   0D,W
0074:  MOVWF  11
....................   y2 = rand; 
0075:  MOVF   11,W
0076:  MOVWF  16
....................   rand = pn_sequence(rand); 
0077:  MOVF   11,W
0078:  MOVWF  1B
0079:  CALL   030
007A:  MOVF   0D,W
007B:  MOVWF  11
....................   color = rand; 
007C:  MOVF   11,W
007D:  MOVWF  17
....................   x1 = x1 >> 1; 
007E:  BCF    03,0
007F:  RRF    13,F
....................   x2 = x2 >> 1; 
0080:  BCF    03,0
0081:  RRF    14,F
....................   // Implement various checks to ensure that the coordinates 
....................   // are properly sized for drawing rectangles. 
....................   if (y1 > 95) y1 = 85; 
0082:  MOVLW  60
0083:  SUBWF  15,W
0084:  BTFSS  03,0
0085:  GOTO   088
0086:  MOVLW  55
0087:  MOVWF  15
....................   if (y2 > 95) y2 = 95; 
0088:  MOVLW  60
0089:  SUBWF  16,W
008A:  BTFSS  03,0
008B:  GOTO   08E
008C:  MOVLW  5F
008D:  MOVWF  16
....................   if (x1 > 126) x1 = 1; 
008E:  MOVLW  7F
008F:  SUBWF  13,W
0090:  BTFSS  03,0
0091:  GOTO   094
0092:  MOVLW  01
0093:  MOVWF  13
....................   if (x2 > 126) x2 = 120; 
0094:  MOVLW  7F
0095:  SUBWF  14,W
0096:  BTFSS  03,0
0097:  GOTO   09A
0098:  MOVLW  78
0099:  MOVWF  14
....................   if (x1 == x2) x2+=10; 
009A:  MOVF   14,W
009B:  SUBWF  13,W
009C:  BTFSS  03,2
009D:  GOTO   0A1
009E:  MOVLW  0A
009F:  ADDWF  14,F
....................   else if (x1>x2) { 
00A0:  GOTO   0AB
00A1:  MOVF   13,W
00A2:  SUBWF  14,W
00A3:  BTFSC  03,0
00A4:  GOTO   0AB
.................... 	  temp = x1; 
00A5:  MOVF   13,W
00A6:  MOVWF  18
.................... 	  x1 = x2; 
00A7:  MOVF   14,W
00A8:  MOVWF  13
.................... 	  x2 = temp; 
00A9:  MOVF   18,W
00AA:  MOVWF  14
....................   } 
....................   if (y1 == y2) y2+= 12; 
00AB:  MOVF   16,W
00AC:  SUBWF  15,W
00AD:  BTFSS  03,2
00AE:  GOTO   0B2
00AF:  MOVLW  0C
00B0:  ADDWF  16,F
....................   else if (y1>y2) { 
00B1:  GOTO   0BC
00B2:  MOVF   15,W
00B3:  SUBWF  16,W
00B4:  BTFSC  03,0
00B5:  GOTO   0BC
.................... 	  temp = y1; 
00B6:  MOVF   15,W
00B7:  MOVWF  18
.................... 	  y1 = y2; 
00B8:  MOVF   16,W
00B9:  MOVWF  15
.................... 	  y2 = temp; 
00BA:  MOVF   18,W
00BB:  MOVWF  16
....................   } 
....................   fill_block(x1,y1,x2,y2,color); 
00BC:  MOVF   13,W
00BD:  MOVWF  1B
00BE:  MOVF   15,W
00BF:  MOVWF  1C
00C0:  MOVF   14,W
00C1:  MOVWF  1D
00C2:  MOVF   16,W
00C3:  MOVWF  1E
00C4:  MOVF   17,W
00C5:  MOVWF  1F
00C6:  CALL   005
....................   // Delay for debug 
....................   for (a=0;a<8;a++) 
00C7:  CLRF   12
00C8:  MOVLW  08
00C9:  SUBWF  12,W
00CA:  BTFSC  03,0
00CB:  GOTO   0E0
....................     for (b=0;b<16000;b++) {} 
00CC:  CLRF   1A
00CD:  CLRF   19
00CE:  MOVLW  3E
00CF:  SUBWF  1A,W
00D0:  BTFSS  03,0
00D1:  GOTO   0DA
00D2:  MOVLW  3E
00D3:  SUBWF  1A,W
00D4:  BTFSS  03,2
00D5:  GOTO   0DE
00D6:  MOVLW  80
00D7:  SUBWF  19,W
00D8:  BTFSC  03,0
00D9:  GOTO   0DE
00DA:  INCF   19,F
00DB:  BTFSC  03,2
00DC:  INCF   1A,F
00DD:  GOTO   0CE
00DE:  INCF   12,F
00DF:  GOTO   0C8
....................   show_leds(rand); 
00E0:  MOVF   11,W
00E1:  MOVWF  1B
00E2:  GOTO   048
.................... } // End of while loop 
00E3:  GOTO   05B
....................  
.................... } 
00E4:  SLEEP

⌨️ 快捷键说明

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