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

📄 intsio2.cod

📁 家电考试系统下位机程序
💻 COD
📖 第 1 页 / 共 2 页
字号:

02C8 C2AB              CLR     ET1
  154: 
  155: PCON |= 0x80;       /* 0x80=SMOD: set serial baudrate doubler */
02CA 438780            ORL     PCON,#080H
  156: 
  157: TMOD &= ~0xF0;      /* clear timer 1 mode bits */
02CD 53890F            ANL     TMOD,#0FH
  158: TMOD |= 0x20;       /* put timer 1 into MODE 2 */
02D0 438920            ORL     TMOD,#020H
  159: 
  160: TH1 = (unsigned char) (256 - (XTAL / (16L * 12L * baudrate)));
02D3 FC                MOV     R4,A
02D4 FD                MOV     R5,A
02D5 7BC0              MOV     R3,#0C0H
02D7 FA                MOV     R2,A
02D8 F9                MOV     R1,A
02D9 F8                MOV     R0,A
02DA 1126              ACALL   ?C?LMUL
02DC A804              MOV     R0,AR4
02DE A905              MOV     R1,AR5
02E0 AA06              MOV     R2,AR6
02E2 AB07              MOV     R3,AR7
02E4 7F00              MOV     R7,#00H
02E6 7EC0              MOV     R6,#0C0H
02E8 7DA8              MOV     R5,#0A8H
02EA 7C00              MOV     R4,#00H
02EC 31CF              ACALL   ?C?SLDIV
02EE EF                MOV     A,R7
02EF F4                CPL     A
02F0 04                INC     A
02F1 F58D              MOV     TH1,A
  161: 
  162: TR1 = 1;            /* start timer 1 */
02F3 D28E              SETB    TR1
  163: }
02F5 D0D0              POP     PSW
02F7 92AF              MOV     EA,C
02F9 22                RET     
----- FUNCTION _com_baudrate (END) -------


----- FUNCTION com_getchar (BEGIN) -----
 FILE: 'SIO.C'
  198: int com_getchar (void)
02FA D3                SETB    C
02FB 10AF01            JBC     EA,?C0020?SIO
02FE C3                CLR     C
02FF         ?C0020?SIO:
02FF C0D0              PUSH    PSW
  199: {
  200: if (com_rbuflen () == 0)
  201: 
0301 711F              ACALL   com_rbuflen
0303 EF                MOV     A,R7
0304 7006              JNZ     ?C0013?SIO
  202:   return (-1);
0306 7EFF              MOV     R6,#0FFH
0308 7FFF              MOV     R7,#0FFH
030A 800E              SJMP    ?C0014?SIO
030C         ?C0013?SIO:
  203: 
  204: return (rbuf [(r_out++) & (RBUF_SIZE - 1)]);
030C AF09              MOV     R7,r_out
030E 0509              INC     r_out
0310 EF                MOV     A,R7
LX51 LINKER/LOCATER V3.23                                                             05/11/2007  14:36:35  PAGE 6


0311 5407              ANL     A,#07H
0313 2411              ADD     A,#LOW rbuf
0315 F8                MOV     R0,A
0316 E6                MOV     A,@R0
0317 FF                MOV     R7,A
0318 7E00              MOV     R6,#00H
  205: }
031A         ?C0014?SIO:
031A D0D0              POP     PSW
031C 92AF              MOV     EA,C
031E 22                RET     
----- FUNCTION com_getchar (END) -------


----- FUNCTION com_rbuflen (BEGIN) -----
 FILE: 'SIO.C'
  212: unsigned char com_rbuflen (void)
031F D3                SETB    C
0320 10AF01            JBC     EA,?C0021?SIO
0323 C3                CLR     C
0324         ?C0021?SIO:
0324 C0D0              PUSH    PSW
  213: {
  214: 
  215: return (r_in - r_out);
0326 C3                CLR     C
0327 E508              MOV     A,r_in
0329 9509              SUBB    A,r_out
032B FF                MOV     R7,A
  216: 
  217: }
032C         ?C0015?SIO:
032C D0D0              POP     PSW
032E 92AF              MOV     EA,C
0330 22                RET     
----- FUNCTION com_rbuflen (END) -------


----- FUNCTION _com_putchar (BEGIN) -----
 FILE: 'SIO.C'
  169: char com_putchar (
0331 D3                SETB    C
0332 10AF01            JBC     EA,?C0019?SIO
0335 C3                CLR     C
0336         ?C0019?SIO:
0336 C0D0              PUSH    PSW
  170:   unsigned char c)
0338 8F0F              MOV     c,R7
  171: {
  172: /*------------------------------------------------
  173: If the buffer is full, return an error value.
  174: ------------------------------------------------*/
  175: if (com_tbuflen () >= TBUF_SIZE)
033A 715F              ACALL   com_tbuflen
033C EF                MOV     A,R7
033D C3                CLR     C
033E 9402              SUBB    A,#02H
0340 4004              JC      ?C0010?SIO
  176:   return (-1);
0342 7FFF              MOV     R7,#0FFH
0344 8014              SJMP    ?C0011?SIO
0346         ?C0010?SIO:
  177: 
  178: /*------------------------------------------------
  179: Add the data to the transmit buffer.  If the
LX51 LINKER/LOCATER V3.23                                                             05/11/2007  14:36:35  PAGE 7


  180: transmit interrupt is disabled, then enable it.
  181: ------------------------------------------------*/
  182: tbuf [t_in & (TBUF_SIZE - 1)] = c;
0346 E50A              MOV     A,t_in
0348 5401              ANL     A,#01H
034A 2419              ADD     A,#LOW tbuf
034C F8                MOV     R0,A
034D A60F              MOV     @R0,c
  183: t_in++;
034F 050A              INC     t_in
  184: 
  185: if (ti_restart)
0351 300004            JNB     ti_restart,?C0012?SIO
  186:   {
  187:   ti_restart = 0;
0354 C200              CLR     ti_restart
  188:   TI = 1;               /* generate transmit interrupt */
0356 D299              SETB    TI
  189:   }
0358         ?C0012?SIO:
  190: 
  191: return (0);
0358 7F00              MOV     R7,#00H
  192: }
035A         ?C0011?SIO:
035A D0D0              POP     PSW
035C 92AF              MOV     EA,C
035E 22                RET     
----- FUNCTION _com_putchar (END) -------


----- FUNCTION com_tbuflen (BEGIN) -----
 FILE: 'SIO.C'
  223: unsigned char com_tbuflen (void)
035F D3                SETB    C
0360 10AF01            JBC     EA,?C0022?SIO
0363 C3                CLR     C
0364         ?C0022?SIO:
0364 C0D0              PUSH    PSW
  224: {
  225: return (t_in - t_out);
  226: }
0366 C3                CLR     C
0367 E50A              MOV     A,t_in
0369 950B              SUBB    A,t_out
036B FF                MOV     R7,A
  227: 
036C         ?C0016?SIO:
036C D0D0              POP     PSW
036E 92AF              MOV     EA,C
0370 22                RET     
----- FUNCTION com_tbuflen (END) -------


----- FUNCTION _putchar (BEGIN) -----
 FILE: 'MAIN.C'
   36: char putchar (char c)
   37: {
0371 8F0C              MOV     c,R7
   38: volatile unsigned int i;
0373         ?C0005?MAIN:
   39: 
   40: while (com_putchar (c) != 0)
0373 AF0C              MOV     R7,c
0375 7131              ACALL   _com_putchar
LX51 LINKER/LOCATER V3.23                                                             05/11/2007  14:36:35  PAGE 8


0377 EF                MOV     A,R7
0378 601A              JZ      ?C0006?MAIN
   41:   {
   42:   for (i=0; i<1000; i++)
037A E4                CLR     A
037B F50D              MOV     i,A
037D F50E              MOV     i+01H,A
037F         ?C0007?MAIN:
037F C3                CLR     C
0380 E50E              MOV     A,i+01H
0382 94E8              SUBB    A,#0E8H
0384 E50D              MOV     A,i
0386 9403              SUBB    A,#03H
0388 50E9              JNC     ?C0005?MAIN
   43:     {
   44:     /*** DO NOTHING ***/
   45:     }
038A 050E              INC     i+01H
038C E50E              MOV     A,i+01H
038E 7002              JNZ     ?C0015?MAIN
0390 050D              INC     i
0392         ?C0015?MAIN:
0392 80EB              SJMP    ?C0007?MAIN
   46:   }
0394         ?C0006?MAIN:
   47: 
   48: return (c);
0394 AF0C              MOV     R7,c
   49: }
0396 22                RET     
----- FUNCTION _putchar (END) -------



?PR?COM_ISR?SIO STATUS=3
  MAX_BOT 3 ()
  MAX_TOP 0 ()
?PR?COM_INITIALIZE?SIO STATUS=3
  MAX_BOT 1 ()
  MAX_TOP 2 (?PR?MAIN?MAIN)
?PR?_COM_BAUDRATE?SIO STATUS=3
  MAX_BOT 1 ()
  MAX_TOP 2 (?PR?MAIN?MAIN)
?PR?_COM_PUTCHAR?SIO STATUS=3
  MAX_BOT 4 (?PR?COM_TBUFLEN?SIO)
  MAX_TOP 2 (?PR?_PUTCHAR?MAIN)
?PR?COM_GETCHAR?SIO STATUS=3
  MAX_BOT 4 (?PR?COM_RBUFLEN?SIO)
  MAX_TOP 4 (?PR?_GETKEY?MAIN)
?PR?COM_RBUFLEN?SIO STATUS=3
  MAX_BOT 1 ()
  MAX_TOP 7 (?PR?COM_GETCHAR?SIO)
?PR?COM_TBUFLEN?SIO STATUS=3
  MAX_BOT 1 ()
  MAX_TOP 5 (?PR?_COM_PUTCHAR?SIO)
?SIO?00023 STATUS=3
  MAX_BOT 0 ()
  MAX_TOP 0 ()
?PR?_GETKEY?MAIN STATUS=3
  MAX_BOT 6 (?PR?COM_GETCHAR?SIO)
  MAX_TOP 2 (?PR?MAIN?MAIN)
?PR?_PUTCHAR?MAIN STATUS=3
  MAX_BOT 6 (?PR?_COM_PUTCHAR?SIO)
  MAX_TOP 0 ()
?PR?MAIN?MAIN STATUS=3
LX51 LINKER/LOCATER V3.23                                                             05/11/2007  14:36:35  PAGE 9


  MAX_BOT 8 (?PR?_GETKEY?MAIN)
  MAX_TOP 0 ()

⌨️ 快捷键说明

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