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

📄 字节位颠倒程序.txt

📁 c51经典子程序代码全集
💻 TXT
字号:
C51编程:看到以前的帖子:字节位颠倒程序的讨论,haotz提供的思路很好,简单高效,但直接用CY却造成程序结果的错误,可细查。 [润宇] [27次] 01-9-27 20:50:57
  修改后的程序:
#include <reg52.h>
#define uchar unsigned char
bdata unsigned char b1,b2;
sbit b10=b1^0;
sbit b11=b1^1;
sbit b12=b1^2;
sbit b13=b1^3;
sbit b14=b1^4;
sbit b15=b1^5;
sbit b16=b1^6;
sbit b17=b1^7;
sbit b20=b2^0;
sbit b21=b2^1;
sbit b22=b2^2;
sbit b23=b2^3;
sbit b24=b2^4;
sbit b25=b2^5;
sbit b26=b2^6;
sbit b27=b2^7;
unsigned char un_down_rev(unsigned char ch);
unsigned char un_down_rev(unsigned char ch)
{         
    b1=ch;
    b27=b10;
    b26=b11;
    b25=b12;
    b24=b13;
    b23=b14;
    b22=b15;
    b21=b16;
    b20=b17;
      return b2;
 }
void main()
{
  unsigned char i;
  i=un_down_rev(0x0f);
}

haotz的.lst文件:

C51 COMPILER V6.10  
TEST                                                                   
03/24/2001 22:28:18 PAGE 1   


C51 COMPILER V6.10, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN .\test.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\test.c DEBUG OBJECTEXTEND 
CODE

stmt level    source

   1          
   2          #include"at89x52.h"
   3          bdata unsigned char b;
   4          sbit b0=b^0;
   5          sbit b1=b^1;
   6          sbit b2=b^2;
   7          sbit b3=b^3;
   8          sbit b4=b^4;
   9          sbit b5=b^5;
  10          sbit b6=b^6;
  11          sbit b7=b^7;
  12          //bit tmp;
  13          unsigned char un_down_rev(unsigned char ch);
  14          unsigned char un_down_rev(unsigned char ch)
  15          {
  16   1          b=ch;
  17   1      
  18   1          CY=b0;
  19   1          b0=b7;
  20   1          b7=CY;    
  21   1          
  22   1          CY=b1;
  23   1          b1=b6;
  24   1          b6=CY;
  25   1      
  26   1      
  27   1          CY=b2;
  28   1          b2=b5;
  29   1          b5=CY;
  30   1      
  31   1          CY=b3;
  32   1          b3=b4;
  33   1          b4=CY;
  34   1      return b;
  35   1      }
  36          void main(void)
  37          {
  38   1          unsigned char i;
  39   1      
  40   1          i=un_down_rev(0x0f);
  41   1      }
C51 COMPILER V6.10  
TEST                                                                   
03/24/2001 22:28:18 PAGE 2   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _un_down_rev (BEGIN)
;---- Variable 'ch' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 14
                                           ; SOURCE LINE # 15
                                           ; SOURCE LINE # 16
0000 8F00        R     MOV     b,R7
                                           ; SOURCE LINE # 18
0002 A200        R     MOV     C,b0
                                           ; SOURCE LINE # 19
0004 A200        R     MOV     C,b7
0006 9200        R     MOV     b0,C
                                           ; SOURCE LINE # 20
0008 9200        R     MOV     b7,C
                                           ; SOURCE LINE # 22
000A A200        R     MOV     C,b1
                                           ; SOURCE LINE # 23
000C A200        R     MOV     C,b6
000E 9200        R     MOV     b1,C
                                           ; SOURCE LINE # 24
0010 9200        R     MOV     b6,C
                                           ; SOURCE LINE # 27
0012 A200        R     MOV     C,b2
                                           ; SOURCE LINE # 28
0014 A200        R     MOV     C,b5
0016 9200        R     MOV     b2,C
                                           ; SOURCE LINE # 29
0018 9200        R     MOV     b5,C
                                           ; SOURCE LINE # 31
001A A200        R     MOV     C,b3
                                           ; SOURCE LINE # 32
001C A200        R     MOV     C,b4
001E 9200        R     MOV     b3,C
                                           ; SOURCE LINE # 33
0020 9200        R     MOV     b4,C
                                           ; SOURCE LINE # 34
                                           ; SOURCE LINE # 35
0022         ?C0001:
0022 22                RET     
             ; FUNCTION _un_down_rev (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 36
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 40
0000 7F0F              MOV     R7,#0FH
0002 120000      R     LCALL   _un_down_rev
0005 8F00        R     MOV     i,R7
                                           ; SOURCE LINE # 41
0007 22                RET     
             ; FUNCTION main (END)



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     43    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       1
C51 COMPILER V6.10  
TEST                                                                   
03/24/2001 22:28:18 PAGE 3   

   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)




呵呵,多谢夸奖,真的有错误!!,自己该一下吧! [haotz] [3次] 01-9-28 下午 01:07:13 

大家多多交流哟。 [润宇] [0次] 01-9-28 下午 10:49:43 

 
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2001 

⌨️ 快捷键说明

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