?? stm8_tsl_multichannelkey.ls
字號(hào):
1584 03dc 96 ldw x,sp
1585 03dd 1c000f addw x,#OFST-5
1586 03e0 cd0000 call c_rtol
1588 ; 1520 Delta = (s16)(tmpdelta >> (u8)8);
1590 03e3 1e10 ldw x,(OFST-4,sp)
1591 03e5 bf00 ldw _Delta,x
1592 03e7 L574:
1593 ; 1538 if (Delta > Delta1)
1595 03e7 9c rvf
1596 03e8 be00 ldw x,_Delta
1597 03ea b300 cpw x,_Delta1
1598 03ec 2d16 jrsle L774
1599 ; 1540 Delta3 = Delta2;
1601 03ee be00 ldw x,_Delta2
1602 03f0 bf00 ldw _Delta3,x
1603 ; 1541 Delta2 = Delta1;
1605 03f2 be00 ldw x,_Delta1
1606 03f4 bf00 ldw _Delta2,x
1607 ; 1542 Delta1 = Delta;
1609 03f6 be00 ldw x,_Delta
1610 03f8 bf00 ldw _Delta1,x
1611 ; 1546 Index2 = Index1;
1613 03fa 7b0d ld a,(OFST-7,sp)
1614 03fc 6b0c ld (OFST-8,sp),a
1615 ; 1547 Index1 = ChannelIndex;
1617 03fe b600 ld a,_ChannelIndex
1618 0400 6b0d ld (OFST-7,sp),a
1620 0402 2020 jra L105
1621 0404 L774:
1622 ; 1551 if (Delta > Delta2)
1624 0404 9c rvf
1625 0405 be00 ldw x,_Delta
1626 0407 b300 cpw x,_Delta2
1627 0409 2d0e jrsle L305
1628 ; 1553 Delta3 = Delta2;
1630 040b be00 ldw x,_Delta2
1631 040d bf00 ldw _Delta3,x
1632 ; 1554 Delta2 = Delta;
1634 040f be00 ldw x,_Delta
1635 0411 bf00 ldw _Delta2,x
1636 ; 1558 Index2 = ChannelIndex;
1638 0413 b600 ld a,_ChannelIndex
1639 0415 6b0c ld (OFST-8,sp),a
1641 0417 200b jra L105
1642 0419 L305:
1643 ; 1562 if (Delta > Delta3)
1645 0419 9c rvf
1646 041a be00 ldw x,_Delta
1647 041c b300 cpw x,_Delta3
1648 041e 2d04 jrsle L105
1649 ; 1567 Delta3 = Delta;
1651 0420 be00 ldw x,_Delta
1652 0422 bf00 ldw _Delta3,x
1653 0424 L105:
1654 ; 1496 for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1656 0424 3c00 inc _ChannelIndex
1659 0426 b600 ld a,_ChannelIndex
1660 0428 a105 cp a,#5
1661 042a 2403 jruge L27
1662 042c cc035d jp L564
1663 042f L27:
1664 ; 1575 if (Delta2 < ((u8)(pMCKeyStruct->EndDetectThreshold >> 1)) - 1)
1666 042f 9c rvf
1667 0430 be00 ldw x,_pMCKeyStruct
1668 0432 e62b ld a,(43,x)
1669 0434 47 sra a
1670 0435 5f clrw x
1671 0436 4d tnz a
1672 0437 2a01 jrpl L25
1673 0439 53 cplw x
1674 043a L25:
1675 043a 5f clrw x
1676 043b 97 ld xl,a
1677 043c 5a decw x
1678 043d b300 cpw x,_Delta2
1679 043f 2d06 jrsle L115
1680 ; 1577 return retval;
1682 0441 7b0e ld a,(OFST-6,sp)
1684 0443 ac1b051b jpf L07
1685 0447 L115:
1686 ; 1602 Minor = Delta2 - Delta3; // Middle - Smallest signals
1688 0447 be00 ldw x,_Delta2
1689 0449 72b00000 subw x,_Delta3
1690 044d 1f05 ldw (OFST-15,sp),x
1691 ; 1603 Major = Delta1 - Delta3; // Biggest - Smallest signals
1693 044f be00 ldw x,_Delta1
1694 0451 72b00000 subw x,_Delta3
1695 0455 1f07 ldw (OFST-13,sp),x
1696 ; 1609 NewPosition = MCKEY1_TABLE_POSITION_OFFSET[Index1][Index2];
1698 0457 7b0c ld a,(OFST-8,sp)
1699 0459 5f clrw x
1700 045a 97 ld xl,a
1701 045b 58 sllw x
1702 045c 1f03 ldw (OFST-17,sp),x
1703 045e 7b0d ld a,(OFST-7,sp)
1704 0460 97 ld xl,a
1705 0461 a60a ld a,#10
1706 0463 42 mul x,a
1707 0464 72fb03 addw x,(OFST-17,sp)
1708 0467 de0000 ldw x,(_MCKEY1_TABLE_POSITION_OFFSET,x)
1709 046a 1f13 ldw (OFST-1,sp),x
1710 ; 1610 SectorComputation = MCKEY1_SECTOR_COMPUTATION;
1712 ; 1611 PositionCorrection = MCKEY1_POSITION_CORRECTION;
1714 ; 1623 SectorComputation = Major * SectorComputation;
1716 046c 1e07 ldw x,(OFST-13,sp)
1717 046e 90ae0055 ldw y,#85
1718 0472 cd0000 call c_imul
1720 0475 1f0a ldw (OFST-10,sp),x
1721 ; 1624 SectorComputation = SectorComputation / (Major + Minor);
1723 0477 1e0a ldw x,(OFST-10,sp)
1724 0479 1607 ldw y,(OFST-13,sp)
1725 047b 72f905 addw y,(OFST-15,sp)
1726 047e 65 divw x,y
1727 047f 1f0a ldw (OFST-10,sp),x
1728 ; 1629 if (NewPosition > 0) // means Offset is > 0 in the ROM table
1730 0481 9c rvf
1731 0482 1e13 ldw x,(OFST-1,sp)
1732 0484 2d0d jrsle L315
1733 ; 1631 NewPosition = (s16)(NewPosition << 1); /*lint !e701 suppress info on this line only */
1735 0486 0814 sll (OFST+0,sp)
1736 0488 0913 rlc (OFST-1,sp)
1737 ; 1632 NewPosition += SectorComputation;
1739 048a 1e13 ldw x,(OFST-1,sp)
1740 048c 72fb0a addw x,(OFST-10,sp)
1741 048f 1f13 ldw (OFST-1,sp),x
1743 0491 200d jra L515
1744 0493 L315:
1745 ; 1636 NewPosition = (s16)((-NewPosition) << 1); /*lint !e701 suppress info on this line only */
1747 0493 1e13 ldw x,(OFST-1,sp)
1748 0495 50 negw x
1749 0496 58 sllw x
1750 0497 1f13 ldw (OFST-1,sp),x
1751 ; 1637 NewPosition -= SectorComputation;
1753 0499 1e13 ldw x,(OFST-1,sp)
1754 049b 72f00a subw x,(OFST-10,sp)
1755 049e 1f13 ldw (OFST-1,sp),x
1756 04a0 L515:
1757 ; 1640 if (pMCKeyStruct->Setting.b.MCKEY_TYPE) // It's a Slider...
1759 04a0 be00 ldw x,_pMCKeyStruct
1760 04a2 e601 ld a,(1,x)
1761 04a4 a502 bcp a,#2
1762 04a6 272c jreq L715
1763 ; 1644 if (NewPosition > 0)
1765 04a8 9c rvf
1766 04a9 1e13 ldw x,(OFST-1,sp)
1767 04ab 2d09 jrsle L125
1768 ; 1646 NewPosition -= PositionCorrection;
1770 04ad 1e13 ldw x,(OFST-1,sp)
1771 04af 1d0055 subw x,#85
1772 04b2 1f13 ldw (OFST-1,sp),x
1774 04b4 2007 jra L325
1775 04b6 L125:
1776 ; 1650 NewPosition = NewPosition + 256 - PositionCorrection;
1778 04b6 1e13 ldw x,(OFST-1,sp)
1779 04b8 1c00ab addw x,#171
1780 04bb 1f13 ldw (OFST-1,sp),x
1781 04bd L325:
1782 ; 1654 if (NewPosition < 0)
1784 04bd 9c rvf
1785 04be 1e13 ldw x,(OFST-1,sp)
1786 04c0 2e03 jrsge L525
1787 ; 1656 NewPosition = 0;
1789 04c2 5f clrw x
1790 04c3 1f13 ldw (OFST-1,sp),x
1791 04c5 L525:
1792 ; 1659 if (NewPosition > 255)
1794 04c5 9c rvf
1795 04c6 1e13 ldw x,(OFST-1,sp)
1796 04c8 a30100 cpw x,#256
1797 04cb 2f0d jrslt L135
1798 ; 1661 NewPosition = 255;
1800 04cd ae00ff ldw x,#255
1801 04d0 1f13 ldw (OFST-1,sp),x
1802 04d2 2006 jra L135
1803 04d4 L715:
1804 ; 1667 NewPosition = (u8)NewPosition;
1806 04d4 7b14 ld a,(OFST+0,sp)
1807 04d6 5f clrw x
1808 04d7 97 ld xl,a
1809 04d8 1f13 ldw (OFST-1,sp),x
1810 04da L135:
1811 ; 1676 if (pMCKeyStruct->Setting.b.DIRECTION) // Anticlockwise direction ...
1813 04da be00 ldw x,_pMCKeyStruct
1814 04dc e601 ld a,(1,x)
1815 04de a501 bcp a,#1
1816 04e0 2603 jrne L47
1817 04e2 cc059d jp L335
1818 04e5 L47:
1819 ; 1680 if (((u8)NewPosition > pMCKeyStruct->UnScaledPosition) && (((u8)NewPosition - pMCKeyStruct->UnScaledPosition) < MCKEY_DIRECTION_CHANGE_MAX_DISPLACEMENT))
1821 04e5 be00 ldw x,_pMCKeyStruct
1822 04e7 e629 ld a,(41,x)
1823 04e9 1114 cp a,(OFST+0,sp)
1824 04eb 244f jruge L535
1826 04ed 9c rvf
1827 04ee 7b14 ld a,(OFST+0,sp)
1828 04f0 5f clrw x
1829 04f1 90be00 ldw y,_pMCKeyStruct
1830 04f4 90e029 sub a,(41,y)
1831 04f7 2401 jrnc L45
1832 04f9 5a decw x
1833 04fa L45:
1834 04fa 02 rlwa x,a
1835 04fb a300ff cpw x,#255
1836 04fe 2e3c jrsge L535
1837 ; 1682 if (NewPosition < (u16)(pMCKeyStruct->UnScaledPosition + pMCKeyStruct->DirectionChangeThreshold))
1839 0500 be00 ldw x,_pMCKeyStruct
1840 0502 e62f ld a,(47,x)
1841 0504 5f clrw x
1842 0505 90be00 ldw y,_pMCKeyStruct
1843 0508 90eb29 add a,(41,y)
1844 050b 2401 jrnc L65
1845 050d 5c incw x
1846 050e L65:
1847 050e 02 rlwa x,a
1848 050f 1313 cpw x,(OFST-1,sp)
1849 0511 230b jrule L735
1850 ; 1684 pMCKeyStruct->Channel[1].IntegratorCounter = pMCKeyStruct->DirectionChangeIntegrator;
1852 0513 be00 ldw x,_pMCKeyStruct
1853 0515 e62e ld a,(46,x)
1854 0517 e711 ld (17,x),a
1855 ; 1685 return retval;
1857 0519 7b0e ld a,(OFST-6,sp)
1859 051b L07:
1861 051b 5b14 addw sp,#20
1862 051d 81 ret
1863 051e L735:
1864 ; 1689 pMCKeyStruct->Channel[1].IntegratorCounter--;
1866 051e be00 ldw x,_pMCKeyStruct
1867 0520 6a11 dec (17,x)
1868 ; 1690 if (!pMCKeyStruct->Channel[1].IntegratorCounter)
1870 0522 be00 ldw x,_pMCKeyStruct
1871 0524 6d11 tnz (17,x)
1872 0526 2610 jrne L345
1873 ; 1692 pMCKeyStruct->Channel[1].IntegratorCounter = pMCKeyStruct->DirectionChangeIntegrator;
1875 0528 be00 ldw x,_pMCKeyStruct
1876 052a e62e ld a,(46,x)
1877 052c e711 ld (17,x),a
1878 ; 1693 pMCKeyStruct->Setting.b.DIRECTION = 0; // New direction accepted: clockwise.
1880 052e be00 ldw x,_pMCKeyStruct
1881 0530 e601 ld a,(1,x)
1882 0532 a4fe and a,#254
1883 0534 e701 ld (1,x),a
1885 0536 2004 jra L535
1886 0538 L345:
1887 ; 1697 return retval;
1889 0538 7b0e ld a,(OFST-6,sp)
1891 053a 20df jra L07
1892 053c L535:
1893 ; 1703 if ((NewPosition + MCKEY_DIRECTION_CHANGE_MAX_DISPLACEMENT) < pMCKeyStruct->UnScaledPosition)
1895 053c 9c rvf
1896 053d 1e13 ldw x,(OFST-1,sp)
1897 053f 1c00ff addw x,#255
1898 0542 90be00 ldw y,_pMCKeyStruct
1899 0545 90e629 ld a,(41,y)
1900 0548 905f clrw y
1901 054a 9097 ld yl,a
1902 054c 90bf00 ldw c_y,y
1903 054f b300 cpw x,c_y
1904 0551 2f03 jrslt L67
1905 0553 cc0654 jp L165
1906 0556 L67:
1907 ; 1705 if ((NewPosition + MCKEY_DIRECTION_CHANGE_TOTAL_STEPS) < (u16)(pMCKeyStruct->UnScaledPosition + pMCKeyStruct->DirectionChangeThreshold))
1909 0556 be00 ldw x,_pMCKeyStruct
1910 0558 e62f ld a,(47,x)
1911 055a 5f clrw x
1912 055b 90be00 ldw y,_pMCKeyStruct
1913 055e 90eb29 add a,(41,y)
1914 0561 2401 jrnc L06
1915 0563 5c incw x
1916 0564 L06:
1917 0564 1613 ldw y,(OFST-1,sp)
1918 0566 72a90100 addw y,#256
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -