打印

发一个可在论坛高亮显示代码的小工具

[复制链接]
2353|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AV693|  楼主 | 2008-9-14 16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用正则表达匹配的方法,效果还算可以。而且是开源的,呵呵,javascript写的,不开源也不行。

由于本论坛对下标运算符方括号的解释做得不好,在程序中含有下标运算符时,显示会混乱,现在的方法是把它转换为中文字符。但会引起程序不能直接运行。
本程序除了对21IC的格式支持外,还对UBB进行支持。可以生成HTML源码。
所以除了用于论坛发贴高亮外,还可以用于写博等。

效果演示:

BOOL TimeOutTest(void)
{

      if(TimeOut_Count>10)  // 时间大于100秒
      {
            TimeOut_Count=0 ;      
           return 1;
      }
      return 0;
}

void disposal_command(unsigned char cmd)
{


//     outPutAscii(cmd);
     if(cmd==CMD_1_ON)
     {

          Light_1_ON();
     }
     else if(cmd==CMD_2_ON)
     {

          Light_2_ON();
     }
     else if(cmd==CMD_1_OFF)
     {

             Light_1_OFF();
     }
     else if(cmd== CMD_2_OFF)
     {

               Light_2_OFF();
     }
     TimeOut_Count_reset();
}
unsigned char Timer0_Count;
void time1_isr(void) interrupt 3 using 3       //定时计数器1
{
        TR1 = 0;
    TH1 = TIME1_LOAD >> 8;
    TL1 = TIME1_LOAD & 0xff;
     TR1=1;
     Timer0_Count++;
     if(Timer0_Count>=25)
     {

          TimeOut_Count++;
          Timer0_Count=0;
     }
}

/********************************************************************************/

void main(void)
{

    IrInit();
     T1_Init();
     TimeOut_Count=0;
    EA=1;
    while(1)
    {

        if(IrTest())     //有遥控的信号吗
        {
                  disposal_command(IrGetcode())//处理遥控命令
        }
        else
        {
                  if(TimeOutTest())  //等待超时了吗
               {          
                          CPU_PowerDown     ();       //系统进入低功耗 
               }
        }
        
    }
}


相关链接:https://bbs.21ic.com/upfiles/img/200711/2007111203116645.rar

相关帖子

沙发
AV693|  楼主 | 2008-9-14 16:58 | 只看该作者

运行于IE浏览器,界面如下

使用特权

评论回复
板凳
phoenixmy| | 2008-9-14 17:02 | 只看该作者

这个好



爱贴代码者必备工具

使用特权

评论回复
地板
AV693|  楼主 | 2008-9-14 17:02 | 只看该作者

再发一个效果




#define LCDSetRead()    LCD_RW=1
#define LCDSetWrite()   LCD_RW=0
#define LCDSetCMD()     LCD_RS=0
#define LCDSetData()    LCD_RS=1
#define LCDSetE()       LCD_E=1
#define LCDClrE()       LCD_E=0

#define LCD_CMD_DISPLAY_ON          0x3f       //显示命令
#define LCD_CMD_DISPLAY_OFF          0x3e       //关闭显示命令
#define LCD_CMD_START_LINE          0xc0          //设置起始行命令,需要设置的行号(0-63)与这个命令或运算
#define     LCD_CMD_SET_X_ADDRESS     0xb8       //设置页面地址(0-7),需要设置的页面地址(X轴地址0-7)与这个命令或运算     
#define     LCD_CMD_SET_Y_ADDRESS     0x40       //设置Y轴地址(0-63),需要设置的Y轴地址与这个命令或运算




#define LCDSelectL()              do{LCD_CSB=0;LCD_CSA=1;}while(0)     //选择左边屏
#define LCDSelectR()              do{LCD_CSB=1;LCD_CSA=0;}while(0)       //选择右边屏
#define Delay5us()                do{_nop_();_nop_();_nop_();_nop_();_nop_();}while(0)
#define Delay1us()                do{_nop_();}while(0)
#define LCDSetRow(row)             LCDWriteCmd(row|LCD_CMD_SET_X_ADDRESS)                     //0-7
#define LCDSetStartLine(line)   LCDWriteCmd(line|LCD_CMD_START_LINE)                    //0-63
#define LCDSetColAdrr(addr)       LCDWriteCmd(addr|LCD_CMD_SET_Y_ADDRESS)                    //0-63,具有自动加一的特点




bit LcdColorFlage=0;
void LCDDelayBusy()     //延迟LCD到不忙的状态
{
    uchar i=100;
    LCDSetCMD();//设置为命令状态
    LCDSetRead()//读取模式
    LCDPORT=0xff;
    LCDSetE()//使能
    do
    {
         Delay5us();
        if( ( LCDPORT & 0x80) == 0)
        {

            break;
        }   
    }
while(--!= 0);
}

void LCDWriteCmd(uchar d) //向LCD写入命令d
{
 
    LCDDelayBusy();               //等待空闲
    LCDSetCMD();               //设置为命令状态
    LCDSetWrite();                //写入模式
    LCDPORT=d;                      //从端口输出命令
    LCDSetE();                       //使能LCD
    Delay5us();
    LCDClrE();                    //退出使能LCD

}
void LCDWriteData(uchar d)     //向LCD写入数据d
{
    LCDDelayBusy();
    LCDSetData();                //设置为数据状态
    LCDSetWrite();                //写入模式
    LCDPORT=d;
    LCDSetE();
    Delay5us();
    LCDClrE();
    
}

使用特权

评论回复
5
awey| | 2008-9-15 21:48 | 只看该作者

这个工具不错,支持一下

使用特权

评论回复
6
awey| | 2008-9-15 21:57 | 只看该作者

试试看


//============= 对分搜寻,插值运算子程序 ==================

UWORD Get_Temp(UWORD AD_Temp)
{

UWORD *point;
UWORD a,b,c;
UBYTE i,j,k;
point=TempTable;
a=*point;
b=*(point+100);                                
if(AD_Temp > a )      return 150;          
if(AD_Temp < b)      return 151;               
point=TempTable;
i=0;
j=100;

while(1)
     {

     k=i+j;
     k=k>>1;
     if(*(point+k)>=AD_Temp)  i=k;
     else     j=k;
     if(j==i+1) break;
     }
a=*(point+i);
b=*(point+j);
c=(AD_Temp-b)*10/(a-b);
c=10*(UWORD)j-c;
return c;
}

使用特权

评论回复
7
Ice_River| | 2008-9-16 15:26 | 只看该作者

测试一下!


Int32U I2CInit( I2CSET *set)
{

     switch (set->num){
          case I2C0:
               //pin map
               I2C0SCLH = Fpclk / set->/ 2;//high duty
               I2C0SCLL = Fpclk / set->/ 2;//low duty
               break;
          case I2C1:
               //pin map
               I2C1SCLH = Fpclk / set->/ 2;//high duty
               I2C1SCLL = Fpclk / set->/ 2;//low duty
               break;
          case I2C2:
               //pin map
               PCONP_bit.PCI2C2 = 1;
               I2C2SCLH = Fpclk / set->/ 2;//high duty
               I2C2SCLL = Fpclk / set->/ 2;//low duty
               break;
     }
     return (TRUE);
}

使用特权

评论回复
8
古道热肠| | 2008-9-16 16:55 | 只看该作者

俺也试试


//----------------------------------------------------------------------------
// 函 数 名:void Send_Byte_To_FlashMemery ( uchar SendByte )
// 用    途:发送一个字节到AT45DB161
// 入口参数:uchar SendByte :需要写入的数据
// 返    回: 无
//----------------------------------------------------------------------------

void Send_Byte_To_FlashMemery ( uchar SendByte )
{

     uchar data uci;
        
    ucBitTemp = SendByte;
    pinAT45_SCK = 1;
    for ( uci = 0; uci < 8; uci++)
    {

         pinAT45_SCK = 0;
         pinAT45_SI = ucBitTemp7;
         pinAT45_SCK = 1;
         ucBitTemp <<= 1;
    }
}


//----------------------------------------------------------------------------
// 函 数 名:uchar  Receive_Byte_From_FlashMemery()
// 用    途:从AT45DB161接受一个字节
// 入口参数:无
// 返    回: uchar ucBitTemp :接受的字节
//----------------------------------------------------------------------------

uchar  Receive_Byte_From_FlashMemery()
{

     uchar data uci;

        pinAT45_SI = 0;
        pinAT45_SCK = 1;
        for ( uci = 0; uci < 8; uci++)
        {

           pinAT45_SCK = 0;
             ucBitTemp <<= 1;
           pinAT45_SCK = 1;
             ucBitTemp0 = pinAT45_SO;
        }
        return (ucBitTemp);
}

使用特权

评论回复
9
古道热肠| | 2008-9-16 16:56 | 只看该作者

嘿嘿,管用,顶一顶

使用特权

评论回复
10
huangqi412| | 2008-9-16 17:33 | 只看该作者

嘿嘿不错

使用特权

评论回复
11
AV693|  楼主 | 2008-9-16 20:14 | 只看该作者

现已修正关键字大小写不敏感的问题。

说明:本小工具远远不如编译器开发环境,只是基于自己构造的正则表达式进行简单的文字匹配替换,所以对复杂高亮分析可能存在BUG(乱码,失真等)。使用时这是要注意的。


现已修正关键字大小写不敏感的问题。
相关链接:https://bbs.21ic.com/upfiles/img/200711/2007111203116645.rar

使用特权

评论回复
12
GeekyGeek| | 2015-10-17 16:09 | 只看该作者
如何使用?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

68

帖子

0

粉丝